{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pixiedust database opened successfully\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "        <div style=\"margin:10px\">\n",
       "            <a href=\"https://github.com/ibm-watson-data-lab/pixiedust\" target=\"_new\">\n",
       "                <img src=\"https://github.com/ibm-watson-data-lab/pixiedust/raw/master/docs/_static/pd_icon32.png\" style=\"float:left;margin-right:10px\"/>\n",
       "            </a>\n",
       "            <span>Pixiedust version 1.1.10</span>\n",
       "        </div>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Package already installed: com.databricks:spark-csv_2.10:1.5.0\n",
      "Package already installed: org.apache.commons:commons-csv:0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<pixiedust.packageManager.package.Package at 0x110763050>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#SKIP_COMPARE_OUTPUT\n",
    "import pixiedust\n",
    "\n",
    "pixiedust.installPackage(\"com.databricks:spark-csv_2.10:1.5.0\")\n",
    "pixiedust.installPackage(\"org.apache.commons:commons-csv:0\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"table table-hover pd_save\" style=\"font-size:small\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th align=\"center\" valign=\"middle\">Id</th>\n",
       "      <th>Name</th>\n",
       "      <th>Topic</th>\n",
       "      <th>Publisher</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  \n",
       "    \n",
       "    <tr>\n",
       "        <td>1</td>\n",
       "        <td>Car performance data</td>\n",
       "        <td>Transportation</td>\n",
       "        <td>IBM</td>\n",
       "    </tr>\n",
       "    \n",
       "  \n",
       "    \n",
       "    <tr>\n",
       "        <td>2</td>\n",
       "        <td>Sample retail sales transactions, January 2009</td>\n",
       "        <td>Economy & Business</td>\n",
       "        <td>IBM Cloud Data Services</td>\n",
       "    </tr>\n",
       "    \n",
       "  \n",
       "    \n",
       "    <tr>\n",
       "        <td>3</td>\n",
       "        <td>Total population by country</td>\n",
       "        <td>Society</td>\n",
       "        <td>IBM Cloud Data Services</td>\n",
       "    </tr>\n",
       "    \n",
       "  \n",
       "    \n",
       "    <tr>\n",
       "        <td>4</td>\n",
       "        <td>GoSales Transactions for Naive Bayes Model</td>\n",
       "        <td>Leisure</td>\n",
       "        <td>IBM</td>\n",
       "    </tr>\n",
       "    \n",
       "  \n",
       "    \n",
       "    <tr>\n",
       "        <td>5</td>\n",
       "        <td>Election results by County</td>\n",
       "        <td>Society</td>\n",
       "        <td>IBM</td>\n",
       "    </tr>\n",
       "    \n",
       "  \n",
       "    \n",
       "    <tr>\n",
       "        <td>6</td>\n",
       "        <td>Million dollar home sales in Massachusetts, USA Feb 2017 through Jan 2018</td>\n",
       "        <td>Economy & Business</td>\n",
       "        <td>Redfin.com</td>\n",
       "    </tr>\n",
       "    \n",
       "  \n",
       "    \n",
       "    <tr>\n",
       "        <td>7</td>\n",
       "        <td>Boston Crime data, 2-week sample</td>\n",
       "        <td>Society</td>\n",
       "        <td>City of Boston</td>\n",
       "    </tr>\n",
       "    \n",
       "  \n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pixiedust.sampleData()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Creating pySpark DataFrame for 'Car performance data'. Please wait...\n",
      "Loading file using 'com.databricks.spark.csv'\n",
      "Successfully created pySpark DataFrame for 'Car performance data'\n"
     ]
    }
   ],
   "source": [
    "#SKIP_COMPARE_OUTPUT\n",
    "sqlContext = SQLContext(sc)\n",
    "dd = pixiedust.sampleData(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "406"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dd.count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "pixiedust": {
     "displayParams": {
      "aggregation": "SUM",
      "charttype": "subplots",
      "handlerId": "barChart",
      "keyFields": "name",
      "mpld3": "true",
      "rowCount": "25",
      "showLegend": "true",
      "valueFields": "mpg,engine"
     }
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style type=\"text/css\">.pd_warning{display:none;}</style><div class=\"pd_warning\"><em>Hey, there's something awesome here! To see it, open this notebook outside GitHub, in a viewer like Jupyter</em></div>\n",
       "        <div class=\"pd_save is-viewer-good\" style=\"padding-right:10px;text-align: center;line-height:initial !important;font-size: xx-large;font-weight: 500;color: coral;\">\n",
       "            \n",
       "        </div>\n",
       "    <div id=\"chartFigureb18ede60\" class=\"pd_save is-viewer-good\" style=\"overflow-x:auto\">\n",
       "            \n",
       "                    \n",
       "\n",
       "<style>\n",
       "\n",
       "</style>\n",
       "\n",
       "<div id=\"fig_el1087851531063208946172331\"></div>\n",
       "<script>\n",
       "function mpld3_load_lib(url, callback){\n",
       "  var s = document.createElement('script');\n",
       "  s.src = url;\n",
       "  s.async = true;\n",
       "  s.onreadystatechange = s.onload = callback;\n",
       "  s.onerror = function(){console.warn(\"failed to load library \" + url);};\n",
       "  document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "}\n",
       "\n",
       "if(typeof(mpld3) !== \"undefined\" && mpld3._mpld3IsLoaded){\n",
       "   // already loaded: just create the figure\n",
       "   !function(mpld3){\n",
       "       // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptionsb18ede60\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"titleb18ede60\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"titleb18ede60\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFieldsb18ede60\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f6\" class=\"fieldb18ede60\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f2\" class=\"fieldb18ede60\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f3\" class=\"fieldb18ede60\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f4\" class=\"fieldb18ede60\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f1\" class=\"fieldb18ede60\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f9\" class=\"fieldb18ede60\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f8\" class=\"fieldb18ede60\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f5\" class=\"fieldb18ede60\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f7\" class=\"fieldb18ede60\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFieldsb18ede60\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f9-keyFieldsb18ede60\" data-field=\"name\">name<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFieldsb18ede60\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f1-valueFieldsb18ede60\" data-field=\"mpg\">mpg<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f3-valueFieldsb18ede60\" data-field=\"engine\">engine<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFieldsb18ede60\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTMLb18ede60');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTMLb18ede60');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"93A81643AB4B479980BF43E10513061E\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#executionb18ede60\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#executionb18ede60\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#executionb18ede60\").length > 0 ){\n",
       "                    $(\"#executionb18ede60\").append($(\"<div></div>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDoneb18ede60 != \"undefined\"){\n",
       "                    onDisplayDoneb18ede60();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,nostore_bokeh='false',showLegend='true',cell_id='93A81643AB4B479980BF43E10513061E',no_gen_tests='true',nostore_vh='867',org_params='no_gen_tests,nostore_pixiedust',mpld3='true',aggregation='SUM',nostore_cw='1099',rowCount='25',handlerId='barChart',valueFields='mpg,engine',charttype='subplots',keyFields='name',nostore_pixiedust='true',prefix='b18ede60')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFieldsb18ede60'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFieldsb18ede60'));\n",
       "$('#chartOptionsb18ede60 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptionsb18ede60 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJSb18ede60').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFieldsb18ede60').length && $('#valueFieldsb18ede60').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFieldsb18ede60').length && $('#keyFieldsb18ede60').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptionsb18ede60 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.fieldb18ede60').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.fieldb18ede60-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFieldsb18ede60, #valueFieldsb18ede60').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.fieldb18ede60');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-b18ede60').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "       mpld3.draw_figure(\"fig_el1087851531063208946172331\", {\"axes\": [{\"xlim\": [-0.5, 24.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.47905935737061567], \"rotation\": -0.0, \"id\": \"el108785154374992\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785154502096\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8105336519315013, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785156062544\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 24.5], \"ylim\": [0.0, 939.75], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785155382096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785155384464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785152700496\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155451792\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785155453584\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785155454864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785155596240\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785155597904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785155652880\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785155654544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785155725904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785155727568\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785155729232\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785155788304\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785155789968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155849040\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155850704\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785155851984\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155899152\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data12\", \"id\": \"el108785155900816\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155951696\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785155953360\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785155954640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785156010000\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108785156011664\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data24\", \"id\": \"el108785156642576\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data25\", \"id\": \"el108785155382288\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"amc gremli..\", \"chevrolet ..\", \"chevrolet ..\", \"datsun 200..\", \"dodge colt\", \"dodge omni\", \"fiat 124b\", \"ford escor..\", \"ford ltd\", \"ford musta..\", \"hi 1200d\", \"mazda glc ..\", \"mazda glc ..\", \"mazda rx-7..\", \"mercedes b..\", \"mercury ca..\", \"mercury ma..\", \"mercury ze..\", \"oldsmobile..\", \"plymouth c..\", \"subaru\", \"toyota cor..\", \"toyota mar..\", \"toyota ter..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 25, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785152685200\", \"ydomain\": [0.0, 939.75], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.35227272727272724, 0.755]}, {\"xlim\": [-0.5, 24.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.32635978683986006], \"rotation\": -0.0, \"id\": \"el108785154898896\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785155137872\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8631023496614891, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785156705872\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 24.5], \"ylim\": [0.0, 85.995], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785156063120\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785156064400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785156143952\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785156145616\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785156146896\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785156202256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785156203920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785156254800\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 3, \"data\": \"data02\", \"id\": \"el108785156256464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785156257744\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156309008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785156310672\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785156365648\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785156367312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785156418192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785156419856\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785156421520\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785156468304\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785156469968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data12\", \"id\": \"el108785156533136\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785156534800\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785156536080\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785156587344\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785156589008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108785156639888\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data24\", \"id\": \"el108785156706768\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 2, \"data\": \"data25\", \"id\": \"el108785156705360\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"amc gremli..\", \"chevrolet ..\", \"chevrolet ..\", \"datsun 200..\", \"dodge colt\", \"dodge omni\", \"fiat 124b\", \"ford escor..\", \"ford ltd\", \"ford musta..\", \"hi 1200d\", \"mazda glc ..\", \"mazda glc ..\", \"mazda rx-7..\", \"mercedes b..\", \"mercury ca..\", \"mercury ma..\", \"mercury ze..\", \"oldsmobile..\", \"plymouth c..\", \"subaru\", \"toyota cor..\", \"toyota mar..\", \"toyota ter..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 25, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785154853904\", \"ydomain\": [0.0, 85.995], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.5477272727272726, 0.125, 0.3522727272727273, 0.755]}], \"height\": 216.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data06\": [[4.75, 0.0, 0.0], [5.25, 0.0, 0.0], [5.25, 105.0, 30.9], [4.75, 105.0, 30.9]], \"data08\": [[6.75, 0.0, 0.0], [7.25, 0.0, 0.0], [7.25, 98.0, 29.9], [6.75, 98.0, 29.9]], \"data09\": [[7.75, 0.0], [8.25, 0.0], [8.25, 702.0], [7.75, 702.0]], \"data20\": [[19.75, 0.0, 0.0], [20.25, 0.0, 0.0], [20.25, 205.0, 58.3], [19.75, 205.0, 58.3]], \"data21\": [[20.75, 0.0, 22.75, 0.0, 0.0], [21.25, 0.0, 23.25, 0.0, 0.0], [21.25, 89.0, 23.25, 38.1, 37.7], [20.75, 89.0, 22.75, 38.1, 37.7]], \"data22\": [[21.75, 0.0, 0.0], [22.25, 0.0, 0.0], [22.25, 312.0, 39.0], [21.75, 312.0, 39.0]], \"data05\": [[3.75, 0.0, 0.0], [4.25, 0.0, 0.0], [4.25, 344.0, 81.9], [3.75, 344.0, 81.9]], \"data02\": [[0.75, 0.0, 0.0, 7.75], [1.25, 0.0, 0.0, 8.25], [1.25, 112.0, 27.0, 8.25], [0.75, 112.0, 27.0, 7.75]], \"data04\": [[2.75, 0.0, 0.0], [3.25, 0.0, 0.0], [3.25, 119.0, 23.9], [2.75, 119.0, 23.9]], \"data01\": [[-0.25, 0.0, 0.0], [0.25, 0.0, 0.0], [0.25, 895.0, 78.0], [-0.25, 895.0, 78.0]], \"data23\": [[23.75, 0.0, 0.0], [24.25, 0.0, 0.0], [24.25, 187.0, 58.5], [23.75, 187.0, 58.5]], \"data24\": [[0.6878733572281958, 0.8957566838361541, 0.740442054958184], [0.7754878534448425, 0.8957566838361541, 0.8280565511748308], [0.7754878534448425, 0.9386804022565614, 0.8280565511748308], [0.6878733572281958, 0.9386804022565614, 0.740442054958184]], \"data03\": [[1.75, 0.0, 0.0], [2.25, 0.0, 0.0], [2.25, 262.0, 20.0], [1.75, 262.0, 20.0]], \"data07\": [[5.75, 0.0, 0.0], [6.25, 0.0, 0.0], [6.25, 88.0, 30.0], [5.75, 88.0, 30.0]], \"data25\": [[0.6791119076065312, 0.8589649251900908, 0.731680605336519], [0.9693349263241736, 0.8589649251900908, 0.9693349263241737], [0.9780963759458382, 0.8589649251900908, 0.9780963759458383], [0.9780963759458382, 0.8712288447387786, 0.9780963759458383], [0.9780963759458382, 0.957076281579593, 0.9780963759458383], [0.9780963759458382, 0.9693402011282806, 0.9780963759458383], [0.9693349263241736, 0.9693402011282806, 0.9693349263241737], [0.6791119076065312, 0.9693402011282806, 0.731680605336519], [0.6703504579848666, 0.9693402011282806, 0.7229191557148544], [0.6703504579848666, 0.957076281579593, 0.7229191557148544], [0.6703504579848666, 0.8712288447387786, 0.7229191557148544], [0.6703504579848666, 0.8589649251900908, 0.7229191557148544], [0.6791119076065312, 0.8589649251900908, 0.731680605336519]], \"data19\": [[17.75, 0.0, 0.0], [18.25, 0.0, 0.0], [18.25, 350.0, 12.0], [17.75, 350.0, 12.0]], \"data18\": [[16.75, 0.0, 0.0], [17.25, 0.0, 0.0], [17.25, 200.0, 20.8], [16.75, 200.0, 20.8]], \"data15\": [[13.75, 0.0, 0.0], [14.25, 0.0, 0.0], [14.25, 183.0, 25.4], [13.75, 183.0, 25.4]], \"data14\": [[12.75, 0.0, 0.0], [13.25, 0.0, 0.0], [13.25, 70.0, 23.7], [12.75, 70.0, 23.7]], \"data17\": [[15.75, 0.0, 0.0], [16.25, 0.0, 0.0], [16.25, 429.0, 11.0], [15.75, 429.0, 11.0]], \"data16\": [[14.75, 0.0, 0.0], [15.25, 0.0, 0.0], [15.25, 155.0, 21.0], [14.75, 155.0, 21.0]], \"data11\": [[9.75, 0.0, 0.0], [10.25, 0.0, 0.0], [10.25, 304.0, 9.0], [9.75, 304.0, 9.0]], \"data10\": [[8.75, 0.0, 0.0], [9.25, 0.0, 0.0], [9.25, 140.0, 25.5], [8.75, 140.0, 25.5]], \"data13\": [[11.75, 0.0, 0.0], [12.25, 0.0, 0.0], [12.25, 78.0, 32.8], [11.75, 78.0, 32.8]], \"data12\": [[10.75, 0.0, 18.75, 0.0, 0.0], [11.25, 0.0, 19.25, 0.0, 0.0], [11.25, 91.0, 19.25, 31.0, 26.0], [10.75, 91.0, 18.75, 31.0, 26.0]]}, \"id\": \"el108785153106320\"});\n",
       "   }(mpld3);\n",
       "}else if(typeof define === \"function\" && define.amd){\n",
       "   // require.js is available: use it to load d3/mpld3\n",
       "   require.config({paths: {d3: \"https://mpld3.github.io/js/d3.v3.min\"}});\n",
       "   require([\"d3\"], function(d3){\n",
       "      window.d3 = d3;\n",
       "      mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "         // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptionsb18ede60\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"titleb18ede60\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"titleb18ede60\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFieldsb18ede60\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f6\" class=\"fieldb18ede60\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f2\" class=\"fieldb18ede60\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f3\" class=\"fieldb18ede60\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f4\" class=\"fieldb18ede60\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f1\" class=\"fieldb18ede60\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f9\" class=\"fieldb18ede60\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f8\" class=\"fieldb18ede60\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f5\" class=\"fieldb18ede60\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f7\" class=\"fieldb18ede60\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFieldsb18ede60\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f9-keyFieldsb18ede60\" data-field=\"name\">name<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFieldsb18ede60\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f1-valueFieldsb18ede60\" data-field=\"mpg\">mpg<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f3-valueFieldsb18ede60\" data-field=\"engine\">engine<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFieldsb18ede60\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTMLb18ede60');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTMLb18ede60');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"93A81643AB4B479980BF43E10513061E\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#executionb18ede60\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#executionb18ede60\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#executionb18ede60\").length > 0 ){\n",
       "                    $(\"#executionb18ede60\").append($(\"<div></div>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDoneb18ede60 != \"undefined\"){\n",
       "                    onDisplayDoneb18ede60();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,nostore_bokeh='false',showLegend='true',cell_id='93A81643AB4B479980BF43E10513061E',no_gen_tests='true',nostore_vh='867',org_params='no_gen_tests,nostore_pixiedust',mpld3='true',aggregation='SUM',nostore_cw='1099',rowCount='25',handlerId='barChart',valueFields='mpg,engine',charttype='subplots',keyFields='name',nostore_pixiedust='true',prefix='b18ede60')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFieldsb18ede60'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFieldsb18ede60'));\n",
       "$('#chartOptionsb18ede60 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptionsb18ede60 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJSb18ede60').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFieldsb18ede60').length && $('#valueFieldsb18ede60').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFieldsb18ede60').length && $('#keyFieldsb18ede60').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptionsb18ede60 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.fieldb18ede60').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.fieldb18ede60-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFieldsb18ede60, #valueFieldsb18ede60').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.fieldb18ede60');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-b18ede60').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "         mpld3.draw_figure(\"fig_el1087851531063208946172331\", {\"axes\": [{\"xlim\": [-0.5, 24.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.47905935737061567], \"rotation\": -0.0, \"id\": \"el108785154374992\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785154502096\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8105336519315013, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785156062544\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 24.5], \"ylim\": [0.0, 939.75], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785155382096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785155384464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785152700496\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155451792\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785155453584\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785155454864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785155596240\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785155597904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785155652880\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785155654544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785155725904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785155727568\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785155729232\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785155788304\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785155789968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155849040\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155850704\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785155851984\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155899152\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data12\", \"id\": \"el108785155900816\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155951696\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785155953360\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785155954640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785156010000\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108785156011664\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data24\", \"id\": \"el108785156642576\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data25\", \"id\": \"el108785155382288\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"amc gremli..\", \"chevrolet ..\", \"chevrolet ..\", \"datsun 200..\", \"dodge colt\", \"dodge omni\", \"fiat 124b\", \"ford escor..\", \"ford ltd\", \"ford musta..\", \"hi 1200d\", \"mazda glc ..\", \"mazda glc ..\", \"mazda rx-7..\", \"mercedes b..\", \"mercury ca..\", \"mercury ma..\", \"mercury ze..\", \"oldsmobile..\", \"plymouth c..\", \"subaru\", \"toyota cor..\", \"toyota mar..\", \"toyota ter..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 25, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785152685200\", \"ydomain\": [0.0, 939.75], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.35227272727272724, 0.755]}, {\"xlim\": [-0.5, 24.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.32635978683986006], \"rotation\": -0.0, \"id\": \"el108785154898896\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785155137872\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8631023496614891, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785156705872\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 24.5], \"ylim\": [0.0, 85.995], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785156063120\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785156064400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785156143952\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785156145616\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785156146896\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785156202256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785156203920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785156254800\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 3, \"data\": \"data02\", \"id\": \"el108785156256464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785156257744\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156309008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785156310672\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785156365648\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785156367312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785156418192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785156419856\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785156421520\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785156468304\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785156469968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data12\", \"id\": \"el108785156533136\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785156534800\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785156536080\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785156587344\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785156589008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108785156639888\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data24\", \"id\": \"el108785156706768\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 2, \"data\": \"data25\", \"id\": \"el108785156705360\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"amc gremli..\", \"chevrolet ..\", \"chevrolet ..\", \"datsun 200..\", \"dodge colt\", \"dodge omni\", \"fiat 124b\", \"ford escor..\", \"ford ltd\", \"ford musta..\", \"hi 1200d\", \"mazda glc ..\", \"mazda glc ..\", \"mazda rx-7..\", \"mercedes b..\", \"mercury ca..\", \"mercury ma..\", \"mercury ze..\", \"oldsmobile..\", \"plymouth c..\", \"subaru\", \"toyota cor..\", \"toyota mar..\", \"toyota ter..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 25, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785154853904\", \"ydomain\": [0.0, 85.995], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.5477272727272726, 0.125, 0.3522727272727273, 0.755]}], \"height\": 216.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data06\": [[4.75, 0.0, 0.0], [5.25, 0.0, 0.0], [5.25, 105.0, 30.9], [4.75, 105.0, 30.9]], \"data08\": [[6.75, 0.0, 0.0], [7.25, 0.0, 0.0], [7.25, 98.0, 29.9], [6.75, 98.0, 29.9]], \"data09\": [[7.75, 0.0], [8.25, 0.0], [8.25, 702.0], [7.75, 702.0]], \"data20\": [[19.75, 0.0, 0.0], [20.25, 0.0, 0.0], [20.25, 205.0, 58.3], [19.75, 205.0, 58.3]], \"data21\": [[20.75, 0.0, 22.75, 0.0, 0.0], [21.25, 0.0, 23.25, 0.0, 0.0], [21.25, 89.0, 23.25, 38.1, 37.7], [20.75, 89.0, 22.75, 38.1, 37.7]], \"data22\": [[21.75, 0.0, 0.0], [22.25, 0.0, 0.0], [22.25, 312.0, 39.0], [21.75, 312.0, 39.0]], \"data05\": [[3.75, 0.0, 0.0], [4.25, 0.0, 0.0], [4.25, 344.0, 81.9], [3.75, 344.0, 81.9]], \"data02\": [[0.75, 0.0, 0.0, 7.75], [1.25, 0.0, 0.0, 8.25], [1.25, 112.0, 27.0, 8.25], [0.75, 112.0, 27.0, 7.75]], \"data04\": [[2.75, 0.0, 0.0], [3.25, 0.0, 0.0], [3.25, 119.0, 23.9], [2.75, 119.0, 23.9]], \"data01\": [[-0.25, 0.0, 0.0], [0.25, 0.0, 0.0], [0.25, 895.0, 78.0], [-0.25, 895.0, 78.0]], \"data23\": [[23.75, 0.0, 0.0], [24.25, 0.0, 0.0], [24.25, 187.0, 58.5], [23.75, 187.0, 58.5]], \"data24\": [[0.6878733572281958, 0.8957566838361541, 0.740442054958184], [0.7754878534448425, 0.8957566838361541, 0.8280565511748308], [0.7754878534448425, 0.9386804022565614, 0.8280565511748308], [0.6878733572281958, 0.9386804022565614, 0.740442054958184]], \"data03\": [[1.75, 0.0, 0.0], [2.25, 0.0, 0.0], [2.25, 262.0, 20.0], [1.75, 262.0, 20.0]], \"data07\": [[5.75, 0.0, 0.0], [6.25, 0.0, 0.0], [6.25, 88.0, 30.0], [5.75, 88.0, 30.0]], \"data25\": [[0.6791119076065312, 0.8589649251900908, 0.731680605336519], [0.9693349263241736, 0.8589649251900908, 0.9693349263241737], [0.9780963759458382, 0.8589649251900908, 0.9780963759458383], [0.9780963759458382, 0.8712288447387786, 0.9780963759458383], [0.9780963759458382, 0.957076281579593, 0.9780963759458383], [0.9780963759458382, 0.9693402011282806, 0.9780963759458383], [0.9693349263241736, 0.9693402011282806, 0.9693349263241737], [0.6791119076065312, 0.9693402011282806, 0.731680605336519], [0.6703504579848666, 0.9693402011282806, 0.7229191557148544], [0.6703504579848666, 0.957076281579593, 0.7229191557148544], [0.6703504579848666, 0.8712288447387786, 0.7229191557148544], [0.6703504579848666, 0.8589649251900908, 0.7229191557148544], [0.6791119076065312, 0.8589649251900908, 0.731680605336519]], \"data19\": [[17.75, 0.0, 0.0], [18.25, 0.0, 0.0], [18.25, 350.0, 12.0], [17.75, 350.0, 12.0]], \"data18\": [[16.75, 0.0, 0.0], [17.25, 0.0, 0.0], [17.25, 200.0, 20.8], [16.75, 200.0, 20.8]], \"data15\": [[13.75, 0.0, 0.0], [14.25, 0.0, 0.0], [14.25, 183.0, 25.4], [13.75, 183.0, 25.4]], \"data14\": [[12.75, 0.0, 0.0], [13.25, 0.0, 0.0], [13.25, 70.0, 23.7], [12.75, 70.0, 23.7]], \"data17\": [[15.75, 0.0, 0.0], [16.25, 0.0, 0.0], [16.25, 429.0, 11.0], [15.75, 429.0, 11.0]], \"data16\": [[14.75, 0.0, 0.0], [15.25, 0.0, 0.0], [15.25, 155.0, 21.0], [14.75, 155.0, 21.0]], \"data11\": [[9.75, 0.0, 0.0], [10.25, 0.0, 0.0], [10.25, 304.0, 9.0], [9.75, 304.0, 9.0]], \"data10\": [[8.75, 0.0, 0.0], [9.25, 0.0, 0.0], [9.25, 140.0, 25.5], [8.75, 140.0, 25.5]], \"data13\": [[11.75, 0.0, 0.0], [12.25, 0.0, 0.0], [12.25, 78.0, 32.8], [11.75, 78.0, 32.8]], \"data12\": [[10.75, 0.0, 18.75, 0.0, 0.0], [11.25, 0.0, 19.25, 0.0, 0.0], [11.25, 91.0, 19.25, 31.0, 26.0], [10.75, 91.0, 18.75, 31.0, 26.0]]}, \"id\": \"el108785153106320\"});\n",
       "      });\n",
       "    });\n",
       "}else{\n",
       "    // require.js not available: dynamically load d3 & mpld3\n",
       "    mpld3_load_lib(\"https://mpld3.github.io/js/d3.v3.min.js\", function(){\n",
       "         mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "                 // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptionsb18ede60\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"titleb18ede60\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"titleb18ede60\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFieldsb18ede60\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f6\" class=\"fieldb18ede60\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f2\" class=\"fieldb18ede60\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f3\" class=\"fieldb18ede60\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f4\" class=\"fieldb18ede60\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f1\" class=\"fieldb18ede60\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f9\" class=\"fieldb18ede60\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f8\" class=\"fieldb18ede60\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f5\" class=\"fieldb18ede60\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f7\" class=\"fieldb18ede60\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"fieldb18ede60-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFieldsb18ede60\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f9-keyFieldsb18ede60\" data-field=\"name\">name<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFieldsb18ede60\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f1-valueFieldsb18ede60\" data-field=\"mpg\">mpg<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"fieldb18ede60-f3-valueFieldsb18ede60\" data-field=\"engine\">engine<a class=\"fieldb18ede60-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFieldsb18ede60\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTMLb18ede60');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTMLb18ede60');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"93A81643AB4B479980BF43E10513061E\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#executionb18ede60\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#executionb18ede60\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#executionb18ede60\").length > 0 ){\n",
       "                    $(\"#executionb18ede60\").append($(\"<div></div>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDoneb18ede60 != \"undefined\"){\n",
       "                    onDisplayDoneb18ede60();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,nostore_bokeh='false',showLegend='true',cell_id='93A81643AB4B479980BF43E10513061E',no_gen_tests='true',nostore_vh='867',org_params='no_gen_tests,nostore_pixiedust',mpld3='true',aggregation='SUM',nostore_cw='1099',rowCount='25',handlerId='barChart',valueFields='mpg,engine',charttype='subplots',keyFields='name',nostore_pixiedust='true',prefix='b18ede60')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFieldsb18ede60'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFieldsb18ede60'));\n",
       "$('#chartOptionsb18ede60 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptionsb18ede60 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJSb18ede60').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFieldsb18ede60').length && $('#valueFieldsb18ede60').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFieldsb18ede60').length && $('#keyFieldsb18ede60').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptionsb18ede60 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.fieldb18ede60').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.fieldb18ede60-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFieldsb18ede60, #valueFieldsb18ede60').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.fieldb18ede60');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-b18ede60').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "                 mpld3.draw_figure(\"fig_el1087851531063208946172331\", {\"axes\": [{\"xlim\": [-0.5, 24.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.47905935737061567], \"rotation\": -0.0, \"id\": \"el108785154374992\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785154502096\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8105336519315013, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785156062544\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 24.5], \"ylim\": [0.0, 939.75], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785155382096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785155384464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785152700496\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155451792\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785155453584\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785155454864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785155596240\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785155597904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785155652880\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785155654544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785155725904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785155727568\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785155729232\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785155788304\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785155789968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155849040\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155850704\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785155851984\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155899152\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data12\", \"id\": \"el108785155900816\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155951696\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785155953360\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785155954640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785156010000\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108785156011664\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data24\", \"id\": \"el108785156642576\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data25\", \"id\": \"el108785155382288\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"amc gremli..\", \"chevrolet ..\", \"chevrolet ..\", \"datsun 200..\", \"dodge colt\", \"dodge omni\", \"fiat 124b\", \"ford escor..\", \"ford ltd\", \"ford musta..\", \"hi 1200d\", \"mazda glc ..\", \"mazda glc ..\", \"mazda rx-7..\", \"mercedes b..\", \"mercury ca..\", \"mercury ma..\", \"mercury ze..\", \"oldsmobile..\", \"plymouth c..\", \"subaru\", \"toyota cor..\", \"toyota mar..\", \"toyota ter..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 25, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785152685200\", \"ydomain\": [0.0, 939.75], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.35227272727272724, 0.755]}, {\"xlim\": [-0.5, 24.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.32635978683986006], \"rotation\": -0.0, \"id\": \"el108785154898896\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785155137872\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8631023496614891, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785156705872\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 24.5], \"ylim\": [0.0, 85.995], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785156063120\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785156064400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785156143952\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785156145616\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785156146896\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785156202256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785156203920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785156254800\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 3, \"data\": \"data02\", \"id\": \"el108785156256464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785156257744\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156309008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785156310672\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785156365648\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785156367312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785156418192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785156419856\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785156421520\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785156468304\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785156469968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data12\", \"id\": \"el108785156533136\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785156534800\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785156536080\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785156587344\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785156589008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108785156639888\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data24\", \"id\": \"el108785156706768\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 2, \"data\": \"data25\", \"id\": \"el108785156705360\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"amc gremli..\", \"chevrolet ..\", \"chevrolet ..\", \"datsun 200..\", \"dodge colt\", \"dodge omni\", \"fiat 124b\", \"ford escor..\", \"ford ltd\", \"ford musta..\", \"hi 1200d\", \"mazda glc ..\", \"mazda glc ..\", \"mazda rx-7..\", \"mercedes b..\", \"mercury ca..\", \"mercury ma..\", \"mercury ze..\", \"oldsmobile..\", \"plymouth c..\", \"subaru\", \"toyota cor..\", \"toyota mar..\", \"toyota ter..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 25, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 6, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785154853904\", \"ydomain\": [0.0, 85.995], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.5477272727272726, 0.125, 0.3522727272727273, 0.755]}], \"height\": 216.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data06\": [[4.75, 0.0, 0.0], [5.25, 0.0, 0.0], [5.25, 105.0, 30.9], [4.75, 105.0, 30.9]], \"data08\": [[6.75, 0.0, 0.0], [7.25, 0.0, 0.0], [7.25, 98.0, 29.9], [6.75, 98.0, 29.9]], \"data09\": [[7.75, 0.0], [8.25, 0.0], [8.25, 702.0], [7.75, 702.0]], \"data20\": [[19.75, 0.0, 0.0], [20.25, 0.0, 0.0], [20.25, 205.0, 58.3], [19.75, 205.0, 58.3]], \"data21\": [[20.75, 0.0, 22.75, 0.0, 0.0], [21.25, 0.0, 23.25, 0.0, 0.0], [21.25, 89.0, 23.25, 38.1, 37.7], [20.75, 89.0, 22.75, 38.1, 37.7]], \"data22\": [[21.75, 0.0, 0.0], [22.25, 0.0, 0.0], [22.25, 312.0, 39.0], [21.75, 312.0, 39.0]], \"data05\": [[3.75, 0.0, 0.0], [4.25, 0.0, 0.0], [4.25, 344.0, 81.9], [3.75, 344.0, 81.9]], \"data02\": [[0.75, 0.0, 0.0, 7.75], [1.25, 0.0, 0.0, 8.25], [1.25, 112.0, 27.0, 8.25], [0.75, 112.0, 27.0, 7.75]], \"data04\": [[2.75, 0.0, 0.0], [3.25, 0.0, 0.0], [3.25, 119.0, 23.9], [2.75, 119.0, 23.9]], \"data01\": [[-0.25, 0.0, 0.0], [0.25, 0.0, 0.0], [0.25, 895.0, 78.0], [-0.25, 895.0, 78.0]], \"data23\": [[23.75, 0.0, 0.0], [24.25, 0.0, 0.0], [24.25, 187.0, 58.5], [23.75, 187.0, 58.5]], \"data24\": [[0.6878733572281958, 0.8957566838361541, 0.740442054958184], [0.7754878534448425, 0.8957566838361541, 0.8280565511748308], [0.7754878534448425, 0.9386804022565614, 0.8280565511748308], [0.6878733572281958, 0.9386804022565614, 0.740442054958184]], \"data03\": [[1.75, 0.0, 0.0], [2.25, 0.0, 0.0], [2.25, 262.0, 20.0], [1.75, 262.0, 20.0]], \"data07\": [[5.75, 0.0, 0.0], [6.25, 0.0, 0.0], [6.25, 88.0, 30.0], [5.75, 88.0, 30.0]], \"data25\": [[0.6791119076065312, 0.8589649251900908, 0.731680605336519], [0.9693349263241736, 0.8589649251900908, 0.9693349263241737], [0.9780963759458382, 0.8589649251900908, 0.9780963759458383], [0.9780963759458382, 0.8712288447387786, 0.9780963759458383], [0.9780963759458382, 0.957076281579593, 0.9780963759458383], [0.9780963759458382, 0.9693402011282806, 0.9780963759458383], [0.9693349263241736, 0.9693402011282806, 0.9693349263241737], [0.6791119076065312, 0.9693402011282806, 0.731680605336519], [0.6703504579848666, 0.9693402011282806, 0.7229191557148544], [0.6703504579848666, 0.957076281579593, 0.7229191557148544], [0.6703504579848666, 0.8712288447387786, 0.7229191557148544], [0.6703504579848666, 0.8589649251900908, 0.7229191557148544], [0.6791119076065312, 0.8589649251900908, 0.731680605336519]], \"data19\": [[17.75, 0.0, 0.0], [18.25, 0.0, 0.0], [18.25, 350.0, 12.0], [17.75, 350.0, 12.0]], \"data18\": [[16.75, 0.0, 0.0], [17.25, 0.0, 0.0], [17.25, 200.0, 20.8], [16.75, 200.0, 20.8]], \"data15\": [[13.75, 0.0, 0.0], [14.25, 0.0, 0.0], [14.25, 183.0, 25.4], [13.75, 183.0, 25.4]], \"data14\": [[12.75, 0.0, 0.0], [13.25, 0.0, 0.0], [13.25, 70.0, 23.7], [12.75, 70.0, 23.7]], \"data17\": [[15.75, 0.0, 0.0], [16.25, 0.0, 0.0], [16.25, 429.0, 11.0], [15.75, 429.0, 11.0]], \"data16\": [[14.75, 0.0, 0.0], [15.25, 0.0, 0.0], [15.25, 155.0, 21.0], [14.75, 155.0, 21.0]], \"data11\": [[9.75, 0.0, 0.0], [10.25, 0.0, 0.0], [10.25, 304.0, 9.0], [9.75, 304.0, 9.0]], \"data10\": [[8.75, 0.0, 0.0], [9.25, 0.0, 0.0], [9.25, 140.0, 25.5], [8.75, 140.0, 25.5]], \"data13\": [[11.75, 0.0, 0.0], [12.25, 0.0, 0.0], [12.25, 78.0, 32.8], [11.75, 78.0, 32.8]], \"data12\": [[10.75, 0.0, 18.75, 0.0, 0.0], [11.25, 0.0, 19.25, 0.0, 0.0], [11.25, 91.0, 19.25, 31.0, 26.0], [10.75, 91.0, 18.75, 31.0, 26.0]]}, \"id\": \"el108785153106320\"});\n",
       "            })\n",
       "         });\n",
       "}\n",
       "</script>\n",
       "                    \n",
       "                        <div>Some labels are not displayed because of a lack of space. Click on Stretch image to see them all</div>\n",
       "                    \n",
       "                        <div>Some labels are not displayed because of a lack of space. Click on Stretch image to see them all</div>\n",
       "                    \n",
       "                        <div>Warning: While great, D3 rendering is using MPLD3 library which has limitations that have not yet been fixed</div>\n",
       "                    \n",
       "                \n",
       "        </div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#SKIP_COMPARE_OUTPUT\n",
    "display(dd, no_gen_tests='true')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "if (typeof pixiedust == \"undefined\"){\n",
       "    var s=document.getElementsByTagName('script')[0];\n",
       "    var g=document.createElement( 'style'  );\n",
       "    g.type='text/css';\n",
       "    g.defer=false; \n",
       "    g.async=false;\n",
       "    var code = \"pd_script,pd_dialog,pd_options,pd_target,pd_event_payload{\\n\"+\n",
       "\"    display:none\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".output_subarea.rendered_html {\\n\"+\n",
       "\"    max-width: 100%;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust {\\n\"+\n",
       "\"    border: 1px solid #ececec;\\n\"+\n",
       "\"    border-radius: 3px;\\n\"+\n",
       "\"    margin: 10px 0;\\n\"+\n",
       "\"    padding: 10px;\\n\"+\n",
       "\"\\n\"+\n",
       "\"    color: #333333;\\n\"+\n",
       "\"    font-size: small;\\n\"+\n",
       "\"    font-weight: 300;\\n\"+\n",
       "\"    letter-spacing: 0.5px;\\n\"+\n",
       "\"    line-height: normal;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-group {\\n\"+\n",
       "\"    border-right: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .display-type-button:not(:first-child) {\\n\"+\n",
       "\"    margin-left: 10px !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-default {\\n\"+\n",
       "\"    border-radius: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-toolbar .btn-default.focus,\\n\"+\n",
       "\".pixiedust-toolbar .btn-default:focus,\\n\"+\n",
       "\".pixiedust-toolbar .btn-default:hover,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default.focus,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default:focus,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default:hover {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #2e6da4;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu {\\n\"+\n",
       "\"    background-color: #ffffff;\\n\"+\n",
       "\"    border-color: rgba(0, 0, 0, 0.15);\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu ul {\\n\"+\n",
       "\"    list-style: outside none none;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li {\\n\"+\n",
       "\"    cursor: pointer;\\n\"+\n",
       "\"    padding: 8px 12px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li:hover {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"    cursor: pointer;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li > span {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    margin-left: 10px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn .fa-chevron-down {\\n\"+\n",
       "\"    margin-left: 25px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-group.open .dropdown-toggle {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #2e6da4;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog {\\n\"+\n",
       "\"    width: 50vw;\\n\"+\n",
       "\"    min-width: 700px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-default:focus,\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-default:hover {\\n\"+\n",
       "\"    background-color: #e6e6e6;\\n\"+\n",
       "\"    border-color: #adadad;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"    transition: background-color 0.15s ease-out 0s;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary:focus,\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary:hover {\\n\"+\n",
       "\"    background-color: #286090;\\n\"+\n",
       "\"    border-color: #204d74;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header .close {\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"    opacity: 1;\\n\"+\n",
       "\"    text-shadow: none;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header .close:hover {\\n\"+\n",
       "\"    opacity: 0.5;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-body {\\n\"+\n",
       "\"    padding: 25px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-footer .btn {\\n\"+\n",
       "\"    min-width: 75px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .executionTime {\\n\"+\n",
       "\"    color: gray;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .expandButton {\\n\"+\n",
       "\"    background-color: transparent;\\n\"+\n",
       "\"    border: 0 none;\\n\"+\n",
       "\"    font-size: 15px;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"    right: 0;\\n\"+\n",
       "\"    text-align: right;\\n\"+\n",
       "\"    top: 0;\\n\"+\n",
       "\"    width: 100%;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton:hover,\\n\"+\n",
       "\".pixiedust .expandButton:active,\\n\"+\n",
       "\".pixiedust .expandButton:focus {\\n\"+\n",
       "\"    background-color: transparent;\\n\"+\n",
       "\"    color: #337ab7;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton:not(.collapsed) {\\n\"+\n",
       "\"    float: right;\\n\"+\n",
       "\"    width: initial;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton > i.fa:before {\\n\"+\n",
       "\"    content: \\\"\\\\f066\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton.collapsed > i.fa:before {\\n\"+\n",
       "\"    content: \\\"\\\\f065\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton.collapsed:before {\\n\"+\n",
       "\"    color: #999999;\\n\"+\n",
       "\"    content: \\\"Pixiedust output minimized\\\";\\n\"+\n",
       "\"    float: left;\\n\"+\n",
       "\"    font-size: 14px;\\n\"+\n",
       "\"    font-style: italic;\\n\"+\n",
       "\"    font-weight: 300;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .chart-button-group {\\n\"+\n",
       "\"    border-bottom: 1px solid #ececec;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt {\\n\"+\n",
       "\"    margin: 6px 0;\\n\"+\n",
       "\"    padding: 6px 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt:first-child {\\n\"+\n",
       "\"    margin-top: 0;\\n\"+\n",
       "\"    padding-top: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox { padding-left: 20px; }\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"    padding-left: 5px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label::before {\\n\"+\n",
       "\"    content: \\\"\\\";\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: absolute;\\n\"+\n",
       "\"    width: 17px;\\n\"+\n",
       "\"    height: 17px;\\n\"+\n",
       "\"    left: 0;\\n\"+\n",
       "\"    margin-left: -20px;\\n\"+\n",
       "\"    border: 1px solid #cccccc;\\n\"+\n",
       "\"    background-color: #fff;\\n\"+\n",
       "\"    -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"    -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"    transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label::after {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: absolute;\\n\"+\n",
       "\"    width: 16px;\\n\"+\n",
       "\"    height: 16px;\\n\"+\n",
       "\"    left: 0;\\n\"+\n",
       "\"    top: 0;\\n\"+\n",
       "\"    margin-left: -20px;\\n\"+\n",
       "\"    padding-left: 2px;\\n\"+\n",
       "\"    padding-top: 1px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"] {\\n\"+\n",
       "\"    opacity: 0;\\n\"+\n",
       "\"    z-index: 1;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"]:focus + label::before {\\n\"+\n",
       "\"    outline: thin dotted;\\n\"+\n",
       "\"    outline: 5px auto -webkit-focus-ring-color;\\n\"+\n",
       "\"    outline-offset: -2px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"]:checked + label::after {\\n\"+\n",
       "\"    font-family: 'FontAwesome';\\n\"+\n",
       "\"    content: \\\"\\\\f00c\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox.checkbox-inline { margin-top: 0; }\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox-primary input[type=\\\"checkbox\\\"]:checked + label::before {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #337ab7;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox-primary input[type=\\\"checkbox\\\"]:checked + label::after {\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog {\\n\"+\n",
       "\"    width: 95% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog .pixiedust {\\n\"+\n",
       "\"    border: none;\\n\"+\n",
       "\"    height: calc(100vh - 200px);\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog .expandButton {\\n\"+\n",
       "\"    visibility: hidden;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .pixiedust-output-wrapper,\\n\"+\n",
       "\".pixiedust-app .pixiedustWrapperHTML,\\n\"+\n",
       "\".pixiedust-app [pixiedust]:not(.pixiedust) {\\n\"+\n",
       "\"    height: 100%;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-default-dialog .modal-dialog {\\n\"+\n",
       "\"  max-width: 1000px !important;\\n\"+\n",
       "\"  min-width: 600px !important;\\n\"+\n",
       "\"  width: 50% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-default-dialog .modal-dialog .pixiedust {\\n\"+\n",
       "\"  height: auto !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize.modal {\\n\"+\n",
       "\"    border: 0 none;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    padding: 0 !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize .modal-dialog {\\n\"+\n",
       "\"    height: 100% !important;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    overflow: hidden;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"    width: 100% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize .modal-dialog .pixiedust {\\n\"+\n",
       "\"    height: calc(100vh - 88px);\\n\"+\n",
       "\"    padding: 0px;\\n\"+\n",
       "\"}\";\n",
       "    try{\n",
       "        g.appendChild(document.createTextNode(code));\n",
       "    }catch(e){\n",
       "        g.text = code;\n",
       "    }\n",
       "    s.parentNode.insertBefore(g,s);\n",
       "}"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "if (typeof pixiedust == \"undefined\"){\n",
       "    var s=document.getElementsByTagName('script')[0];\n",
       "    var g=document.createElement( 'script'  );\n",
       "    g.type= 'text/javascript';\n",
       "    g.defer=false; \n",
       "    g.async=false;\n",
       "    var code = \"var pixiedust = (function(){\\n\"+\n",
       "\"    return {\\n\"+\n",
       "\"        input_reply_queue: {\\n\"+\n",
       "\"            inflight: null,\\n\"+\n",
       "\"            queue: [],\\n\"+\n",
       "\"            callbacks: {},\\n\"+\n",
       "\"            counter: 0,\\n\"+\n",
       "\"            registerCallback: function(cb){\\n\"+\n",
       "\"                var handle = 'id_' + this.counter++;\\n\"+\n",
       "\"                this.callbacks[handle] = cb;\\n\"+\n",
       "\"                return \\\"$$\\\" + handle + \\\"$$\\\";\\n\"+\n",
       "\"            },\\n\"+\n",
       "\"            parseCallback: function(content){\\n\"+\n",
       "\"                var match = content.text.match(/\\\\$\\\\$(.*)\\\\$\\\\$((.|\\\\n)*)/i);\\n\"+\n",
       "\"                if (match){\\n\"+\n",
       "\"                    content.text = match[2].trim();\\n\"+\n",
       "\"                    if (!this.callbacks[match[1]]){\\n\"+\n",
       "\"                        console.log(\\\"Cannot find callbacks for \\\" + match[1]);\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        var retValue = this.callbacks[match[1]];\\n\"+\n",
       "\"                        delete this.callbacks[match[1]];\\n\"+\n",
       "\"                        return retValue;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                return null;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        getCell: function(cell_id){\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var cells=IPython.notebook.get_cells().filter(function(cell){\\n\"+\n",
       "\"                return cell.cell_id==cell_id;\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            return cells.length>0?cells[0]:null;\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        executeDisplay:function(pd_ctls, user_ctls){\\n\"+\n",
       "\"            var pd_controls = pd_ctls || {};\\n\"+\n",
       "\"            var user_controls = user_ctls || {\\\"options\\\":{}};\\n\"+\n",
       "\"            if (user_controls.inFlight){\\n\"+\n",
       "\"                console.log(\\\"Ignoring request to execute Display that is already being executed\\\");\\n\"+\n",
       "\"                return;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            user_controls.inFlight = true;\\n\"+\n",
       "\"            var options = $.extend({}, pd_controls.options || {}, user_controls.options || {} );\\n\"+\n",
       "\"            function wrapDisplayDone(fn){\\n\"+\n",
       "\"                return function(targetNode, targetNodeUpdated){\\n\"+\n",
       "\"                    user_controls.inFlight = false;\\n\"+\n",
       "\"                    if(targetNodeUpdated){\\n\"+\n",
       "\"                        if (fn){\\n\"+\n",
       "\"                            fn.apply(this);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        $(document).trigger('pd_event', {type:\\\"pd_load\\\", targetNode: targetNode});\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            user_controls.onDisplayDone = wrapDisplayDone( user_controls.onDisplayDone);\\n\"+\n",
       "\"            var pd_prefix = pd_controls.prefix;\\n\"+\n",
       "\"            var $targetDivId = user_controls.targetDivId;\\n\"+\n",
       "\"            !function() {\\n\"+\n",
       "\"    function getTargetNodeId(override=null){\\n\"+\n",
       "\"        return override || $targetDivId || (\\\"wrapperHTML\\\"+ pd_prefix);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function getTargetNode(override=null){\\n\"+\n",
       "\"        return $('#' + getTargetNodeId(override));\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function checkRootInit(){\\n\"+\n",
       "\"        node = getTargetNode();\\n\"+\n",
       "\"        var retValue = node.is(\\\"[pd_init]\\\");\\n\"+\n",
       "\"        if (retValue){\\n\"+\n",
       "\"            node.removeAttr(\\\"pd_init\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return retValue;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function setText(targetNode, contents, pdCtl = null, userCtl = null){\\n\"+\n",
       "\"        var pd_elements = []\\n\"+\n",
       "\"        targetNode.children().each(function(){\\n\"+\n",
       "\"            if (this.tagName.toLowerCase().startsWith(\\\"pd_\\\")){\\n\"+\n",
       "\"                pd_elements.push($(this).clone());\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        if (!targetNode.hasClass(\\\"use_stream_output\\\")){\\n\"+\n",
       "\"            targetNode.text(contents);\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            var consoleNode = targetNode.children(\\\"div.consoleOutput\\\");\\n\"+\n",
       "\"            if (consoleNode.length == 0){\\n\"+\n",
       "\"                consoleNode = targetNode.append('<div class=\\\"consoleOutput\\\"></div>').children(\\\"div.consoleOutput\\\");\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            var existing = consoleNode.text();\\n\"+\n",
       "\"            if (existing != \\\"\\\"){\\n\"+\n",
       "\"                contents = existing + \\\"\\\\n\\\" + contents;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            consoleNode.html('<pre style=\\\"max-height: 300px;border: 1px lightgray solid;margin-top: 20px;\\\">' + contents + \\\"</pre>\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (pd_elements.length > 0 ){\\n\"+\n",
       "\"            targetNode.append(pd_elements);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function setHTML(targetNode, contents, pdCtl = null, userCtl = null){\\n\"+\n",
       "\"        var pd_elements = []\\n\"+\n",
       "\"        targetNode.children().each(function(){\\n\"+\n",
       "\"            var eltName = this.tagName.toLowerCase();\\n\"+\n",
       "\"            if (eltName.startsWith(\\\"pd_\\\") || (eltName == \\\"div\\\" && this.classList.contains(\\\"consoleOutput\\\")) ){\\n\"+\n",
       "\"                pd_elements.push($(this).clone());\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        targetNode.html(\\\"<div pd_stop_propagation style='height:100%;'>\\\" + contents + \\\"</div>\\\");\\n\"+\n",
       "\"        if (pd_elements.length > 0 ){\\n\"+\n",
       "\"            targetNode.append(pd_elements);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    function send_input_reply(cb, cmd, pd_controls){\\n\"+\n",
       "\"        if (cmd == 'c' || cmd == 'continue' || cmd.startsWith(\\\"$$\\\")){\\n\"+\n",
       "\"            cb = null;\\n\"+\n",
       "\"            pixiedust.input_reply_queue.queue = [];\\n\"+\n",
       "\"            pixiedust.input_reply_queue.callbacks = {};\\n\"+\n",
       "\"            $(\\\"#debugger_container_\\\" + pd_controls.prefix).hide();\\n\"+\n",
       "\"            if (cmd.startsWith(\\\"$$\\\")){\\n\"+\n",
       "\"                cmd = cmd.substring(2);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else if (cmd == 'no_op'){\\n\"+\n",
       "\"            cb = null;\\n\"+\n",
       "\"            cmd = null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (cb && $targetDivId == \\\"debugger_refresh\\\"){\\n\"+\n",
       "\"            cb.refreshDebugger = true;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        pixiedust.input_reply_queue.inflight = cb;\\n\"+\n",
       "\"        if (cmd){\\n\"+\n",
       "\"            var prolog = cb ? \\\"print('\\\" + pixiedust.input_reply_queue.registerCallback(cb) + \\\"');;\\\" : \\\"\\\";\\n\"+\n",
       "\"            IPython.notebook.session.kernel.send_input_reply( prolog + cmd );\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var cellId = options.cell_id || \\\"\\\";\\n\"+\n",
       "\"    var curCell = pixiedust.getCell(cellId);\\n\"+\n",
       "\"    console.log(\\\"curCell\\\",curCell);\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var callbacks = {\\n\"+\n",
       "\"        shell : {\\n\"+\n",
       "\"            reply : function(){\\n\"+\n",
       "\"                if ( !callbacks.response ){\\n\"+\n",
       "\"                    var targetNodeUpdated = false;\\n\"+\n",
       "\"                    if (!user_controls.partialUpdate){\\n\"+\n",
       "\"                        targetNodeUpdated = setHTML(getTargetNode(), \\\"\\\",pd_controls, user_controls);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                        user_controls.onDisplayDone(getTargetNode(), targetNodeUpdated);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            },\\n\"+\n",
       "\"            payload : {\\n\"+\n",
       "\"                set_next_input : function(payload){\\n\"+\n",
       "\"                    if (curCell){\\n\"+\n",
       "\"                        curCell._handle_set_next_input(payload);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        iopub:{\\n\"+\n",
       "\"            output:function(msg){\\n\"+\n",
       "\"                if (curCell && !$targetDivId && getTargetNode().length == 0){\\n\"+\n",
       "\"                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                    return;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                callbacks.response = true;\\n\"+\n",
       "\"                console.log(\\\"msg\\\", msg);\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                if (cellId == \\\"\\\"){\\n\"+\n",
       "\"                    if (curCell){\\n\"+\n",
       "\"                        curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                        curCell.output_area.outputs=[];\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        console.log(\\\"Could not find current cell\\\");\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    return;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                var msg_type=msg.header.msg_type;\\n\"+\n",
       "\"                var content = msg.content;\\n\"+\n",
       "\"                var targetNodeUpdated = false;\\n\"+\n",
       "\"                if(msg_type===\\\"stream\\\"){\\n\"+\n",
       "\"                    var reply_callbacks = pixiedust.input_reply_queue.parseCallback(content);\\n\"+\n",
       "\"                    if (reply_callbacks && reply_callbacks != callbacks){\\n\"+\n",
       "\"                        if (reply_callbacks.iopub){\\n\"+\n",
       "\"                            reply_callbacks.iopub.output(msg);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        return;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    var useHTML = false;\\n\"+\n",
       "\"                    var process_output = getScriptOfType($(\\\"#\\\" + $targetDivId), \\\"process_output\\\");\\n\"+\n",
       "\"                    if (process_output){\\n\"+\n",
       "\"                        try{\\n\"+\n",
       "\"                            content.text = new Function('output', process_output)(content.text);\\n\"+\n",
       "\"                            useHTML = true;\\n\"+\n",
       "\"                        }catch(e){\\n\"+\n",
       "\"                            console.log(\\\"Error while invoking post output function\\\", e, content.text, process_output);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (user_controls.onSuccess){\\n\"+\n",
       "\"                        user_controls.onSuccess(content.text);\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        fn = useHTML?setHTML:setText;\\n\"+\n",
       "\"                        targetNodeUpdated = fn(getTargetNode(), content.text, pd_controls, user_controls);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else if (msg_type===\\\"display_data\\\" || msg_type===\\\"execute_result\\\"){\\n\"+\n",
       "\"                    var html=null;\\n\"+\n",
       "\"                    if (!!content.data[\\\"text/html\\\"]){\\n\"+\n",
       "\"                        html=content.data[\\\"text/html\\\"];\\n\"+\n",
       "\"                    }else if (!!content.data[\\\"image/png\\\"]){\\n\"+\n",
       "\"                        html=html||\\\"\\\";\\n\"+\n",
       "\"                        html+=\\\"<img src='data:image/png;base64,\\\" +content.data[\\\"image/png\\\"]+\\\"'></img>\\\";\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                                                    \\n\"+\n",
       "\"                    if (!!content.data[\\\"application/javascript\\\"]){\\n\"+\n",
       "\"                        try {\\n\"+\n",
       "\"                            eval(content.data[\\\"application/javascript\\\"]);\\n\"+\n",
       "\"                        } catch(err) {\\n\"+\n",
       "\"                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                        }                        \\n\"+\n",
       "\"                        return;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    if (html){\\n\"+\n",
       "\"                        try{\\n\"+\n",
       "\"                            if (user_controls.onSuccess){\\n\"+\n",
       "\"                                user_controls.onSuccess(html);\\n\"+\n",
       "\"                            }else{\\n\"+\n",
       "\"                                targetNodeUpdated = setHTML(getTargetNode(), html, pd_controls, user_controls);\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                            if (content.metadata && content.metadata.pixieapp_metadata){\\n\"+\n",
       "\"                                \\n\"+\n",
       "\"                                if (curCell){\\n\"+\n",
       "\"                                    curCell._metadata.pixiedust.pixieapp = content.metadata.pixieapp_metadata;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                                \\n\"+\n",
       "\"                            }                            \\n\"+\n",
       "\"                        }catch(e){\\n\"+\n",
       "\"                            console.log(\\\"Invalid html output\\\", e, html);\\n\"+\n",
       "\"                            targetNodeUpdated = setHTML(getTargetNode(),  \\\"Invalid html output: \\\" + e.message + \\\"<pre>\\\" \\n\"+\n",
       "\"                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\\\"/g,'&quot;') + \\\"<pre>\\\",\\n\"+\n",
       "\"                                pd_controls, user_controls);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (callbacks.options && callbacks.options.nostore_delaysave){\\n\"+\n",
       "\"                            setTimeout(function(){\\n\"+\n",
       "\"                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\\n\"+\n",
       "\"                            }, 1000);\\n\"+\n",
       "\"                        }else{\\n\"+\n",
       "\"                            pixiedust.saveOutputInCell(curCell, content, html, msg_type);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else if (msg_type === \\\"error\\\") {\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    require(['base/js/utils'], function(utils) {\\n\"+\n",
       "\"                        var tb = content.traceback;\\n\"+\n",
       "\"                        console.log(\\\"tb\\\",tb);\\n\"+\n",
       "\"                        if (tb && tb.length>0){\\n\"+\n",
       "\"                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\\\\\n';},\\\"\\\");\\n\"+\n",
       "\"                            console.log(\\\"data\\\",data);\\n\"+\n",
       "\"                            data = utils.fixConsole(data);\\n\"+\n",
       "\"                            data = utils.fixCarriageReturn(data);\\n\"+\n",
       "\"                            data = utils.autoLinkUrls(data);\\n\"+\n",
       "\"                            if (user_controls.onError){\\n\"+\n",
       "\"                                user_controls.onError(data);\\n\"+\n",
       "\"                            }else{\\n\"+\n",
       "\"                                var debugger_html = '<button type=\\\"submit\\\" pd_options=\\\"new_parent_prefix=false\\\" pd_target=\\\"' + \\n\"+\n",
       "\"                                getTargetNodeId() + '\\\" pd_app=\\\"pixiedust.apps.debugger.PixieDebugger\\\">Post Mortem</button>' +\\n\"+\n",
       "\"                                '<span>&nbsp;&nbsp;</span>' +\\n\"+\n",
       "\"                                '<button type=\\\"submit\\\" pd_options=\\\"new_parent_prefix=false;debug_route=true\\\" pd_target=\\\"' + \\n\"+\n",
       "\"                                getTargetNodeId() + '\\\" pd_app=\\\"pixiedust.apps.debugger.PixieDebugger\\\">Debug Route</button>'\\n\"+\n",
       "\"\\n\"+\n",
       "\"                                targetNodeUpdated = setHTML(\\n\"+\n",
       "\"                                    getTargetNode(), \\n\"+\n",
       "\"                                    debugger_html + \\\"<pre>\\\" + data + '</pre>' + debugger_html, \\n\"+\n",
       "\"                                    pd_controls, \\n\"+\n",
       "\"                                    user_controls\\n\"+\n",
       "\"                                );\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    });\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    callbacks.response = false;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                    user_controls.onDisplayDone(getTargetNode(), targetNodeUpdated);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        input : function(msg){\\n\"+\n",
       "\"            var reply_callbacks = pixiedust.input_reply_queue.inflight;\\n\"+\n",
       "\"            if (!reply_callbacks || reply_callbacks.refreshDebugger){\\n\"+\n",
       "\"                $(\\\"#debugger_container_\\\" + pd_controls.prefix).show();\\n\"+\n",
       "\"                var input_target = \\\"input_reply_\\\" + pd_controls.prefix;\\n\"+\n",
       "\"                var process_output = getScriptOfType($(\\\"#\\\" + input_target), \\\"process_output\\\");\\n\"+\n",
       "\"                if (process_output){\\n\"+\n",
       "\"                    try{\\n\"+\n",
       "\"                        if (reply_callbacks){\\n\"+\n",
       "\"                            reply_callbacks.refreshDebugger = false;\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (!pixiedust.input_reply_queue.inflight){\\n\"+\n",
       "\"                            pixiedust.input_reply_queue.inflight = {};\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        msg.content.prompt = new Function('output', process_output)(msg.content.prompt);\\n\"+\n",
       "\"                        targetNodeUpdated = setHTML(getTargetNode(input_target), msg.content.prompt, pd_controls, user_controls);\\n\"+\n",
       "\"                        if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                            user_controls.onDisplayDone(getTargetNode(input_target), targetNodeUpdated);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }catch(e){\\n\"+\n",
       "\"                        console.log(\\\"Error while invoking post output function\\\", e, msg.content.prompt, process_output);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    console.log(\\\"No element with id input_reply_\\\"+pd_controls.prefix + \\\" found\\\");\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            if (reply_callbacks && reply_callbacks.answer_input_reply){\\n\"+\n",
       "\"                var answer = reply_callbacks.answer_input_reply;\\n\"+\n",
       "\"                reply_callbacks.answer_input_reply = null;\\n\"+\n",
       "\"                send_input_reply(reply_callbacks, answer, pd_controls);\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                var next_input_reply = pixiedust.input_reply_queue.queue.shift();\\n\"+\n",
       "\"                if (next_input_reply && next_input_reply.command == \\\"no_op_delay\\\"){\\n\"+\n",
       "\"                    next_input_reply = pixiedust.input_reply_queue.queue.shift();\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                if (next_input_reply){\\n\"+\n",
       "\"                    send_input_reply(next_input_reply.callbacks, next_input_reply.command, pd_controls);\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    pixiedust.input_reply_queue.inflight = null;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            console.log(\\\"Handling input msg request: \\\", msg);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\\n\"+\n",
       "\"    \\n\"+\n",
       "\"        var command = user_controls.script || pd_controls.command.replace(\\\"cellId\\\",cellId);\\n\"+\n",
       "\"        if ( !user_controls.script){\\n\"+\n",
       "\"            function addOptions(options, override=true, ignoreKeys=[]){\\n\"+\n",
       "\"                function getStringRep(v) {\\n\"+\n",
       "\"                    return \\\"'\\\" + v + \\\"'\\\";\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                for (var key in (options||{})){\\n\"+\n",
       "\"                    if (ignoreKeys.indexOf(key)>=0){\\n\"+\n",
       "\"                        continue;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    var value = options[key];\\n\"+\n",
       "\"                    var hasValue = value != null && typeof value !== 'undefined' && value !== '';\\n\"+\n",
       "\"                    var replaceValue = hasValue ? (key+\\\"=\\\" + getStringRep(value) ) : \\\"\\\";\\n\"+\n",
       "\"                    var pattern = (hasValue?\\\"\\\":\\\",\\\")+\\\"\\\\\\\\s*\\\" + key + \\\"\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"                    var rpattern=new RegExp(pattern);\\n\"+\n",
       "\"                    var n = command.search(rpattern);\\n\"+\n",
       "\"                    if ( n >= 0 ){\\n\"+\n",
       "\"                        if (override){\\n\"+\n",
       "\"                            command = command.replace(rpattern, replaceValue);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }else if (hasValue){\\n\"+\n",
       "\"                        var n = command.lastIndexOf(\\\")\\\");\\n\"+\n",
       "\"                        command = [command.slice(0, n), (command[n-1]==\\\"(\\\"? \\\"\\\":\\\",\\\") + replaceValue, command.slice(n)].join('')\\n\"+\n",
       "\"                    }        \\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            if(typeof cellMetadata != \\\"undefined\\\" && cellMetadata.displayParams){\\n\"+\n",
       "\"                addOptions(cellMetadata.displayParams);\\n\"+\n",
       "\"                addOptions({\\\"showchrome\\\":\\\"true\\\"});\\n\"+\n",
       "\"            }else if (curCell && curCell._metadata.pixiedust ){\\n\"+\n",
       "\"                if (!pd_controls.avoidMetadata){\\n\"+\n",
       "\"                    ignoreKeys = pd_controls.options.nostore_pixieapp?[\\\"handlerId\\\"]:[];\\n\"+\n",
       "\"                    if (pd_controls.override_keys){\\n\"+\n",
       "\"                        Array.prototype.push.apply(ignoreKeys,pd_controls.override_keys);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pd_controls.include_keys || []\\n\"+\n",
       "\"                    addOptions(curCell._metadata.pixiedust.displayParams || {}, pd_controls.useCellMetadata, ignoreKeys);\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    var includeKeys = pd_controls.include_keys || [];\\n\"+\n",
       "\"                    var includeOptions = {};\\n\"+\n",
       "\"                    for (var key in (curCell._metadata.pixiedust.displayParams||{})){\\n\"+\n",
       "\"                        if (includeKeys.indexOf(key) > -1 || !(key in pd_controls.options)){\\n\"+\n",
       "\"                            includeOptions[key] = curCell._metadata.pixiedust.displayParams[key];\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    addOptions(includeOptions);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            addOptions(user_controls.options||{});\\n\"+\n",
       "\"            var pattern = \\\"\\\\\\\\w*\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"            var rpattern=new RegExp(pattern,\\\"g\\\");\\n\"+\n",
       "\"            var n = command.match(rpattern);\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var org_params = {}\\n\"+\n",
       "\"            for (var i=0; i<n.length;i++){\\n\"+\n",
       "\"                var parts = n[i].split(\\\"=\\\")\\n\"+\n",
       "\"                if (parts[0].trim() == \\\"org_params\\\"){\\n\"+\n",
       "\"                    var value = parts[1].trim()\\n\"+\n",
       "\"                    var values = value.substring(1,value.length-1).split(\\\",\\\");\\n\"+\n",
       "\"                    for (var p in values){\\n\"+\n",
       "\"                        org_params[values[p].trim()] = true;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    break;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            var displayParams={}\\n\"+\n",
       "\"            for (var i = 0; i < n.length; i++){\\n\"+\n",
       "\"                var parts=n[i].split(\\\"=\\\");\\n\"+\n",
       "\"                var key = parts[0].trim();\\n\"+\n",
       "\"                var value = parts[1].trim()\\n\"+\n",
       "\"                if (!key.startsWith(\\\"nostore_\\\") && key != \\\"showchrome\\\" && key != \\\"prefix\\\" && key != \\\"cell_id\\\" && key != \\\"org_params\\\" && !!!org_params[key]){\\n\"+\n",
       "\"                    displayParams[key] = value.substring(1,value.length-1);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"\\n\"+\n",
       "\"            \\n\"+\n",
       "\"\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var rpattern=/,(.*?)='(.*?)'/g;\\n\"+\n",
       "\"            var newOptions = {};\\n\"+\n",
       "\"            for (var match = rpattern.exec(command); match != null; match = rpattern.exec(command)){\\n\"+\n",
       "\"                newOptions[match[1]] = match[2];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            pd_controls.options = newOptions;\\n\"+\n",
       "\"            pd_controls.command = command;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if(curCell&&curCell.output_area){ \\n\"+\n",
       "\"            if ( !user_controls.nostoreMedatadata ){\\n\"+\n",
       "\"                curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\\n\"+\n",
       "\"                curCell._metadata.pixiedust.displayParams=displayParams\\n\"+\n",
       "\"                curCell.output_area.outputs=[];\\n\"+\n",
       "\"                var old_msg_id = curCell.last_msg_id;\\n\"+\n",
       "\"                if (old_msg_id) {\\n\"+\n",
       "\"                    curCell.kernel.clear_callbacks_for_msg(old_msg_id);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            console.log(\\\"couldn't find the cell\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        $('#wrapperJS' + pd_prefix).html(\\\"\\\")\\n\"+\n",
       "\"        if (!getTargetNode().hasClass( \\\"no_loading_msg\\\" )){\\n\"+\n",
       "\"            setHTML(getTargetNode(), \\n\"+\n",
       "\"                '<div style=\\\"width:100px;height:60px;left:47%;position:relative\\\">'+\\n\"+\n",
       "\"                    '<i class=\\\"fa fa-circle-o-notch fa-spin\\\" style=\\\"font-size:48px\\\"></i>'+\\n\"+\n",
       "\"                '</div>'+\\n\"+\n",
       "\"                '<div style=\\\"text-align:center\\\">' +\\n\"+\n",
       "\"                    (getTargetNode().attr(\\\"pd_loading_msg\\\") || \\\"Loading your data. Please wait...\\\") +\\n\"+\n",
       "\"                '</div>',\\n\"+\n",
       "\"                pd_controls, user_controls\\n\"+\n",
       "\"            );\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        if (curCell && checkRootInit() && curCell._metadata.pixiedust && curCell._metadata.pixiedust.pixieapp){\\n\"+\n",
       "\"            pd_controls.entity = pd_controls.entity || []\\n\"+\n",
       "\"            if (pd_controls.entity.length == 1 && (pd_controls.options.nostore_pixieapp == pd_controls.entity[0])){\\n\"+\n",
       "\"                console.log(\\\"Initializing pixieapp metadata\\\");\\n\"+\n",
       "\"                command = pd_controls.options.nostore_pixieapp + \\\".append_metadata(\\\" + \\n\"+\n",
       "\"                JSON.stringify(curCell._metadata.pixiedust.pixieapp) + \\\")\\\\n\\\" + command\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (user_controls.send_input_reply){\\n\"+\n",
       "\"            command = user_controls.send_input_reply;\\n\"+\n",
       "\"            callbacks.answer_input_reply = user_controls.answer_input_reply;\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            pixiedust.input_reply_queue.queue = pixiedust.input_reply_queue.queue.filter(\\n\"+\n",
       "\"                function(item){\\n\"+\n",
       "\"                    return item.command!='no_op';\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            );\\n\"+\n",
       "\"            if (pixiedust.input_reply_queue.inflight || pixiedust.input_reply_queue.queue.length > 0 || command == \\\"no_op_delay\\\"){\\n\"+\n",
       "\"                pixiedust.input_reply_queue.queue.push({\\\"command\\\":command, \\\"callbacks\\\":callbacks});\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                send_input_reply(callbacks, command, pd_controls);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            if (pixiedust.input_reply_queue.inflight){\\n\"+\n",
       "\"                console.log(\\\"Warning: A kernel request is triggered but not all the reply callback where consummed\\\", command);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            command = command.trim();\\n\"+\n",
       "\"            IPython.notebook.session.kernel.execute(command, callbacks, {\\n\"+\n",
       "\"                silent:true,store_history:false,stop_on_error:true,allow_stdin : true\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        \\n\"+\n",
       "\"\\n\"+\n",
       "\"        console.log(\\\"Running command2:\\\\n\\\",command);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"}()\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        executeInDialog:function(pd_controls, user_controls){\\n\"+\n",
       "\"            pd_controls = pd_controls || {};\\n\"+\n",
       "\"            user_controls = user_controls || {\\\"options\\\":{}};\\n\"+\n",
       "\"            var displayOptions = $.extend({}, pd_controls.options || {}, user_controls.options || {} );\\n\"+\n",
       "\"            var global={};\\n\"+\n",
       "\"            var sourceDivId = displayOptions.targetDivId;\\n\"+\n",
       "\"            require(['base/js/dialog'],function(dialog){\\n\"+\n",
       "\"                var modal = dialog.modal;\\n\"+\n",
       "\"                var attr_pd_ctrl = JSON.stringify(pd_controls).trim()\\n\"+\n",
       "\"                    .replace(/&/g, '&amp;')\\n\"+\n",
       "\"                    .replace(/'/g, '&apos;')\\n\"+\n",
       "\"                    .replace(/\\\"/g, '&quot;')\\n\"+\n",
       "\"                    .replace(/</g, '&lt;')\\n\"+\n",
       "\"                    .replace(/>/g, '&gt;');\\n\"+\n",
       "\"                var dialogRoot = \\\"dialog\\\" + pd_controls.prefix + \\\"root\\\";\\n\"+\n",
       "\"                var options = {\\n\"+\n",
       "\"                    title: \\\"PixieDust: \\\" + (displayOptions.title || \\\"Dialog\\\"),\\n\"+\n",
       "\"                    body: '<div id=\\\"' + dialogRoot + '\\\" pixiedust=\\\"' + attr_pd_ctrl + '\\\" class=\\\"pixiedust\\\"></div>',\\n\"+\n",
       "\"                    sanitize:false,\\n\"+\n",
       "\"                    notebook: IPython.notebook,\\n\"+\n",
       "\"                    keyboard_manager: IPython.notebook.keyboard_manager,\\n\"+\n",
       "\"                    maximize_modal: (displayOptions.maximize === \\\"true\\\"),\\n\"+\n",
       "\"                    custom_class: (displayOptions.customClass || ''),\\n\"+\n",
       "\"                    hide_header: (displayOptions.hideHeader === 'true'),\\n\"+\n",
       "\"                    hide_footer: (displayOptions.showFooter === undefined || displayOptions.showFooter !== 'true'),\\n\"+\n",
       "\"                    buttons: {\\n\"+\n",
       "\"                        OK: {\\n\"+\n",
       "\"                            class : \\\"btn-primary btn-ok\\\",\\n\"+\n",
       "\"                            click: function() {\\n\"+\n",
       "\"                                var dlg = $(\\\"#\\\" + dialogRoot + \\\" > pd_dialog\\\");\\n\"+\n",
       "\"                                try{\\n\"+\n",
       "\"                                    pixiedust.dialogRoot = null;\\n\"+\n",
       "\"                                    $(document).trigger('pd_event', {targetDivId: sourceDivId || dialogRoot, entity: pd_controls.options.nostore_pixieapp});\\n\"+\n",
       "\"                                    return new Function('global', 'modal_obj', dlg.find(\\\"> pd_ok\\\").text().trim())(global, modal_obj);\\n\"+\n",
       "\"                                }catch(e){\\n\"+\n",
       "\"                                    console.error(e);\\n\"+\n",
       "\"                                    return false;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        },\\n\"+\n",
       "\"                        Cancel: {\\n\"+\n",
       "\"                            class : \\\"btn-cancel\\\",\\n\"+\n",
       "\"                            click: function(){\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                function resizeDialog() {\\n\"+\n",
       "\"                    global.modalBodyStyle = $('.pixiedust .modal-body').attr('style');\\n\"+\n",
       "\"                    global.modalFooterStyle = $('.pixiedust .modal-footer').attr('style');\\n\"+\n",
       "\"                    $('.pixiedust .modal-body').attr('style', global.modalBodyStyle ? global.modalBodyStyle + ';padding:5px 20px !important;' : 'padding:5px 20px !important;');\\n\"+\n",
       "\"                    if (options.hide_footer){\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').attr('style', 'display:none !important;');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    $(\\\".pixiedust .modal-footer\\\").find(\\\"> button:contains('OK')\\\").attr(\\\"pd_options\\\", \\\"toto=true\\\");\\n\"+\n",
       "\"                    if (options.hide_header) {\\n\"+\n",
       "\"                        global.modalHeaderStyle = $('.pixiedust .modal-header').attr('style');\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').attr('style', 'display:none !important;');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                function resetDialog() {\\n\"+\n",
       "\"                    if (global.modalBodyStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-body').attr('style', global.modalBodyStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-body').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (global.modalFooterStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').attr('style', global.modalFooterStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (global.modalHeaderStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').attr('style', global.modalHeaderStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                var modal_obj = modal(options);\\n\"+\n",
       "\"                modal_obj.addClass('pixiedust pixiedust-app ' + options.custom_class);\\n\"+\n",
       "\"                if (options.maximize_modal) {\\n\"+\n",
       "\"                    modal_obj.addClass('pixiedust pixiedust-app pixiedust-maximize ' + options.custom_class);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                modal_obj.on('shown.bs.modal', function(){\\n\"+\n",
       "\"                    resizeDialog();\\n\"+\n",
       "\"                    var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\\n\"+\n",
       "\"                    if( isFF && options.keyboard_manager){\\n\"+\n",
       "\"                        \\n\"+\n",
       "\"                        var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\\n\"+\n",
       "\"                        global.KMEnableProto = KeyboardManager.prototype.enable;\\n\"+\n",
       "\"                        KeyboardManager.prototype.enable = function () {\\n\"+\n",
       "\"                            this.enabled = false;\\n\"+\n",
       "\"                        };\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    IPython.keyboard_manager.register_events(modal_obj);\\n\"+\n",
       "\"                    user_controls.options.targetDivId = user_controls.targetDivId = dialogRoot;\\n\"+\n",
       "\"                    if ( user_controls.options.dialog == 'true'){\\n\"+\n",
       "\"                        user_controls.onDisplayDone = function(){\\n\"+\n",
       "\"                            var dlg = $(\\\"#\\\" + dialogRoot + \\\" > pd_dialog\\\")\\n\"+\n",
       "\"                            try{\\n\"+\n",
       "\"                                new Function('global', 'modal_obj', dlg.find(\\\"> pd_onload\\\").text().trim())(global, modal_obj);\\n\"+\n",
       "\"                            }catch(e){\\n\"+\n",
       "\"                                console.error(e);\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pixiedust.dialogRoot = dialogRoot;\\n\"+\n",
       "\"                    pixiedust.executeDisplay(pd_controls, user_controls);\\n\"+\n",
       "\"                });\\n\"+\n",
       "\"                modal_obj.on(\\\"hidden.bs.modal\\\", function () {\\n\"+\n",
       "\"                    resetDialog();\\n\"+\n",
       "\"                    if ( global.KMEnableProto ){\\n\"+\n",
       "\"                        var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\\n\"+\n",
       "\"                        KeyboardManager.prototype.enable = global.KMEnableProto;\\n\"+\n",
       "\"                        delete global.KMEnableProto;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pixiedust.dialogRoot = null;\\n\"+\n",
       "\"                });\\n\"+\n",
       "\"            })\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        sendEvent: function(payload, divId){\\n\"+\n",
       "\"            payload = payload || {};\\n\"+\n",
       "\"            var targetElement = event.target || event.srcElement;\\n\"+\n",
       "\"            divId = divId || $(targetElement).uniqueId().attr('id');\\n\"+\n",
       "\"            payload.targetDivId = divId;\\n\"+\n",
       "\"            $(document).trigger('pd_event', payload);\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        saveOutputInCell: function(curCell, content, html, msg_type){\\n\"+\n",
       "\"            if(curCell && curCell.output_area && curCell.output_area.outputs){\\n\"+\n",
       "\"                var data = JSON.parse(JSON.stringify(content.data));\\n\"+\n",
       "\"                if(!!data[\\\"text/html\\\"])data[\\\"text/html\\\"]=html;\\n\"+\n",
       "\"                function savedData(data){\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    var markup='<style type=\\\"text/css\\\">.pd_warning{display:none;}</style>';\\n\"+\n",
       "\"                    markup+='<div class=\\\"pd_warning\\\"><em>Hey, there\\\\'s something awesome here! To see it, open this notebook outside GitHub, in a viewer like Jupyter</em></div>';\\n\"+\n",
       "\"                    nodes = $.parseHTML(data[\\\"text/html\\\"], null, true);\\n\"+\n",
       "\"                    var s = $(nodes).wrap(\\\"<div>\\\").parent().find(\\\".pd_save\\\").not(\\\".pd_save .pd_save\\\");\\n\"+\n",
       "\"                    s.each(function(){\\n\"+\n",
       "\"                        var found = false;\\n\"+\n",
       "\"                        if ( $(this).attr(\\\"id\\\") ){\\n\"+\n",
       "\"                            var n = $(\\\"#\\\" + $(this).attr(\\\"id\\\"));\\n\"+\n",
       "\"                            if (n.length>0){\\n\"+\n",
       "\"                                found=true;\\n\"+\n",
       "\"                                n.each(function(){\\n\"+\n",
       "\"                                    $(this).addClass(\\\"is-viewer-good\\\");\\n\"+\n",
       "\"                                });\\n\"+\n",
       "\"                                markup+=n.wrap(\\\"<div>\\\").parent().html();\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }else{\\n\"+\n",
       "\"                            $(this).addClass(\\\"is-viewer-good\\\");\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (!found){\\n\"+\n",
       "\"                            markup+=$(this).parent().html();\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    });\\n\"+\n",
       "\"                    data[\\\"text/html\\\"] = markup;\\n\"+\n",
       "\"                    return data;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                curCell.output_area.outputs = [{\\n\"+\n",
       "\"                    \\\"data\\\": savedData(data),\\\"metadata\\\":content.metadata,\\\"output_type\\\":msg_type\\n\"+\n",
       "\"                }];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"})();\\n\"+\n",
       "\"\\n\"+\n",
       "\"function resolveScriptMacros(script){\\n\"+\n",
       "\"    script = script && script.replace(/\\\\$val\\\\(\\\\\\\"?(\\\\w*)\\\\\\\"?\\\\)/g, function(a,b){\\n\"+\n",
       "\"        var n = $(\\\"#\\\" + b );\\n\"+\n",
       "\"        var v = null;\\n\"+\n",
       "\"        if (n.length > 0){\\n\"+\n",
       "\"            if (n.is(':checkbox')){\\n\"+\n",
       "\"                v = n.is(':checked').toString();\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                v = $(\\\"#\\\" + b ).val() || $(\\\"#\\\" + b ).text();\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\" && window[b] && typeof window[b] === \\\"function\\\"){\\n\"+\n",
       "\"            v = window[b]();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\" && pixiedust[b] && typeof pixiedust[b] === \\\"function\\\"){\\n\"+\n",
       "\"            v = pixiedust[b]();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\"){\\n\"+\n",
       "\"            console.log(\\\"Warning: Unable to resolve value for element \\\", b);\\n\"+\n",
       "\"            return a;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (typeof v === \\\"object\\\"){\\n\"+\n",
       "\"            return JSON.stringify(v)\\n\"+\n",
       "\"                .split('\\\\\\\\').join('\\\\\\\\\\\\\\\\')\\n\"+\n",
       "\"                .split(\\\"'''\\\").join(\\\"\\\\\\\\'\\\\\\\\'\\\\\\\\'\\\")\\n\"+\n",
       "\"                .split('\\\"\\\"\\\"').join('\\\\\\\\\\\"\\\\\\\\\\\"\\\\\\\\\\\"')\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return v.split('\\\"').join('&quot;').split('\\\\n').join('\\\\\\\\n');\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    return script;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getParentScript(element){\\n\"+\n",
       "\"    var scripts = [];\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $(element).parents(\\\"[pd_script]\\\").each(function(){\\n\"+\n",
       "\"        scripts.unshift(this.getAttribute(\\\"pd_script\\\"));\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var script = \\\"\\\";\\n\"+\n",
       "\"    $.each( scripts, function(index, value){\\n\"+\n",
       "\"        if (value){\\n\"+\n",
       "\"            script += \\\"\\\\n\\\" + value;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    return script;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function preRun(element){\\n\"+\n",
       "\"    var preRunCode = getScriptOfType(element, \\\"preRun\\\");\\n\"+\n",
       "\"    if (!preRunCode ){\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return new Function(preRunCode.trim())();\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getScriptOfType(element, scriptType){\\n\"+\n",
       "\"    if (!element.jquery){\\n\"+\n",
       "\"        element = $(element);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var code = null;\\n\"+\n",
       "\"    element.find(\\\"> pd_script\\\").each(function(){\\n\"+\n",
       "\"        var type = this.getAttribute(\\\"type\\\");\\n\"+\n",
       "\"        if (type == scriptType){\\n\"+\n",
       "\"            code = $(this).text();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    if (code){\\n\"+\n",
       "\"        return code.trim();\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return code;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function addOptions(command, options, override=true){\\n\"+\n",
       "\"    function getStringRep(v) {\\n\"+\n",
       "\"        if (typeof v === 'string' || v instanceof String){\\n\"+\n",
       "\"            v = v.replace(/'/g,\\\"\\\\\\\\\\\\'\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return \\\"'\\\" + v + \\\"'\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    for (var key in (options||{})){\\n\"+\n",
       "\"        var value = options[key];\\n\"+\n",
       "\"        var hasValue = value != null && typeof value !== 'undefined' && value !== '';\\n\"+\n",
       "\"        var replaceValue = hasValue ? (key+\\\"=\\\" + getStringRep(value) ) : \\\"\\\";\\n\"+\n",
       "\"        var pattern = (hasValue?\\\"\\\":\\\",\\\")+\\\"\\\\\\\\s*\\\" + key + \\\"\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"        var rpattern=new RegExp(pattern);\\n\"+\n",
       "\"        var n = command.search(rpattern);\\n\"+\n",
       "\"        if ( n >= 0 ){\\n\"+\n",
       "\"            if (override){\\n\"+\n",
       "\"                command = command.replace(rpattern, replaceValue);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else if (hasValue && command.search(/display\\\\s*\\\\(/) >= 0 ){\\n\"+\n",
       "\"            var n = command.lastIndexOf(\\\")\\\");\\n\"+\n",
       "\"            command = [command.slice(0, n), (command[n-1]==\\\"(\\\"? \\\"\\\":\\\",\\\") + replaceValue, command.slice(n)].join('')\\n\"+\n",
       "\"        }        \\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return command;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function computeGeometry(element, execInfo){\\n\"+\n",
       "\"        var parentStyles = [];\\n\"+\n",
       "\"    var hiddenBlockStyle = 'visibility: hidden !important; display: block !important;';\\n\"+\n",
       "\"    var tDiv = $(\\\"#\\\" + execInfo.targetDivId);\\n\"+\n",
       "\"    var tDivParents = tDiv.parents().addBack().filter(':hidden');\\n\"+\n",
       "\"    tDivParents.each(function() {\\n\"+\n",
       "\"        var currentStyle = $(this).attr('style');\\n\"+\n",
       "\"        parentStyles.push(currentStyle);\\n\"+\n",
       "\"        $(this).attr('style', currentStyle ? currentStyle + ';' + hiddenBlockStyle : hiddenBlockStyle);\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"\\n\"+\n",
       "\"        w = tDiv.width()\\n\"+\n",
       "\"    if (w) {\\n\"+\n",
       "\"        execInfo.options.nostore_cw= w;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if ($(element).parents(\\\".modal-dialog\\\").length > 0 ) {\\n\"+\n",
       "\"        h = tDiv.height()\\n\"+\n",
       "\"        if (h) {\\n\"+\n",
       "\"            execInfo.options.nostore_ch = h-10;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"        tDivParents.each(function(i) {\\n\"+\n",
       "\"        if (parentStyles[i] === undefined) {\\n\"+\n",
       "\"            $(this).removeAttr('style');\\n\"+\n",
       "\"        } else {\\n\"+\n",
       "\"            $(this).attr('style', parentStyles[i]);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readScriptAttribute(element){\\n\"+\n",
       "\"    var retValue = element.getAttribute(\\\"pd_script\\\");\\n\"+\n",
       "\"    var run_raw = false;\\n\"+\n",
       "\"    if (!retValue){\\n\"+\n",
       "\"        $(element).find(\\\"> pd_script\\\").each(function(){\\n\"+\n",
       "\"            var type = this.getAttribute(\\\"type\\\");\\n\"+\n",
       "\"            if (!type || type==\\\"python\\\"){\\n\"+\n",
       "\"                retValue = $(this).text();\\n\"+\n",
       "\"                run_raw = this.hasAttribute(\\\"run_raw\\\");\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        })\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return retValue?{\\\"script\\\":retValue, \\\"run_raw\\\":run_raw}:null;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getAttribute(element, name, defValue, defValueIfKeyAlone){\\n\"+\n",
       "\"    if (!element.hasAttribute(name)){\\n\"+\n",
       "\"        return defValue;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    retValue = element.getAttribute(name);\\n\"+\n",
       "\"    return retValue || defValueIfKeyAlone;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function convertToBoolean(value, def){\\n\"+\n",
       "\"    if (value === undefined){\\n\"+\n",
       "\"        return def;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (typeof(value) == \\\"string\\\"){\\n\"+\n",
       "\"        return value.toLowerCase() == \\\"true\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return value;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readExecInfo(pd_controls, element, searchParents, fromExecInfo){\\n\"+\n",
       "\"    if (searchParents === null || searchParents === undefined ){\\n\"+\n",
       "\"        searchParents = !element.hasAttribute(\\\"pd_stop_propagation\\\");\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var execInfo = {\\\"options\\\":{}};\\n\"+\n",
       "\"    $.extend(execInfo, fromExecInfo || {});\\n\"+\n",
       "\"    var hasOptions = false;\\n\"+\n",
       "\"    $.each( element.attributes, function(){\\n\"+\n",
       "\"        if (this.name.startsWith(\\\"option_\\\")){\\n\"+\n",
       "\"            hasOptions = true;\\n\"+\n",
       "\"            execInfo.options[this.name.replace(\\\"option_\\\", \\\"\\\")] = this.value || null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    var pd_options = resolveScriptMacros(element.getAttribute(\\\"pd_options\\\"));\\n\"+\n",
       "\"    if (pd_options){\\n\"+\n",
       "\"        var parts = pd_options.split(\\\";\\\");\\n\"+\n",
       "\"        $.each( parts, function(){\\n\"+\n",
       "\"            var index = this.indexOf(\\\"=\\\");\\n\"+\n",
       "\"            if ( index > 0){\\n\"+\n",
       "\"                hasOptions = true;\\n\"+\n",
       "\"                execInfo.options[this.substring(0, index)] = this.substring(index+1);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $(element).find(\\\"> pd_options\\\").each(function(){\\n\"+\n",
       "\"        try{\\n\"+\n",
       "\"            var options = JSON.parse($(this).text());\\n\"+\n",
       "\"            hasOptions = true;\\n\"+\n",
       "\"            for (var key in options) { \\n\"+\n",
       "\"                execInfo.options[key] = resolveScriptMacros(options[key]); \\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }catch(e){\\n\"+\n",
       "\"            console.log(\\\"Error parsing pd_options, invalid json\\\", e);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    })\\n\"+\n",
       "\"    if (convertToBoolean(execInfo.options.nostore_figureOnly, true)){\\n\"+\n",
       "\"        execInfo.options.nostore_figureOnly = true;\\n\"+\n",
       "\"    }else{\\n\"+\n",
       "\"        delete execInfo.options.nostore_figureOnly;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execInfo.options.targetDivId = execInfo.targetDivId = pd_controls.refreshTarget || element.getAttribute(\\\"pd_target\\\");\\n\"+\n",
       "\"    if (execInfo.options.targetDivId){\\n\"+\n",
       "\"        execInfo.options.no_margin=true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    execInfo.options.widget = element.getAttribute(\\\"pd_widget\\\");\\n\"+\n",
       "\"    execInfo.pixieapp = element.getAttribute(\\\"pd_app\\\");\\n\"+\n",
       "\"    if (execInfo.pixieapp && !execInfo.targetDivId){\\n\"+\n",
       "\"        execInfo.options.targetDivId = execInfo.targetDivId = $(element).uniqueId().attr('id');\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    computeGeometry(element, execInfo);\\n\"+\n",
       "\"\\n\"+\n",
       "\"    scriptAttr = readScriptAttribute(element);\\n\"+\n",
       "\"    if (scriptAttr){\\n\"+\n",
       "\"        execInfo.script = (execInfo.script || \\\"\\\") + \\\"\\\\n\\\" + scriptAttr.script;\\n\"+\n",
       "\"        execInfo.script_run_raw = scriptAttr.run_raw;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execInfo.refresh = execInfo.refresh || (getAttribute(element, \\\"pd_refresh\\\", \\\"false\\\", \\\"true\\\") == 'true');\\n\"+\n",
       "\"    execInfo.norefresh = element.hasAttribute(\\\"pd_norefresh\\\");\\n\"+\n",
       "\"    execInfo.entity = element.hasAttribute(\\\"pd_entity\\\") ? resolveScriptMacros(element.getAttribute(\\\"pd_entity\\\")) || \\\"pixieapp_entity\\\" : null;\\n\"+\n",
       "\"    function applyEntity(c, e, doptions){\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        doptions.prefix = pd_controls.prefix;\\n\"+\n",
       "\"\\n\"+\n",
       "\"        pd_controls.sniffers = pd_controls.sniffers || [];\\n\"+\n",
       "\"        pd_controls.sniffers.forEach(function(sniffer){\\n\"+\n",
       "\"            c = addOptions(c, eval('(' + sniffer + ')'))       \\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        if (!e){\\n\"+\n",
       "\"            return addOptions(c, doptions);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (pd_controls.entity){\\n\"+\n",
       "\"            c = c.replace(pd_controls.entity, pd_controls.entity+ \\\".\\\" + e );\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            c = c.replace(/\\\\((\\\\w*),/, \\\"($1.\\\" + e + \\\",\\\");\\n\"+\n",
       "\"        }        \\n\"+\n",
       "\"        return addOptions(c, doptions);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    var hasRefreshTarget = element.hasAttribute(\\\"pd_refresh\\\") && \\n\"+\n",
       "\"                           element.getAttribute(\\\"pd_refresh\\\") != \\\"true\\\" &&\\n\"+\n",
       "\"                           element.getAttribute(\\\"pd_refresh\\\") != \\\"false\\\";\\n\"+\n",
       "\"    if ( (!hasOptions && (execInfo.refresh || hasRefreshTarget || execInfo.options.widget) && !execInfo.script) \\n\"+\n",
       "\"        || (!execInfo.script && execInfo.pixieapp)){\\n\"+\n",
       "\"        execInfo.script = \\\"#refresh\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    var dialog = (execInfo.options.dialog == \\\"true\\\");\\n\"+\n",
       "\"    if ( dialog ){\\n\"+\n",
       "\"        execInfo.script = execInfo.script || \\\"#refresh\\\";\\n\"+\n",
       "\"        execInfo.refresh = true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (execInfo.script){\\n\"+\n",
       "\"        execInfo.script = execInfo.script.trim()\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        var entity = pd_controls.entity;\\n\"+\n",
       "\"        if (!entity){\\n\"+\n",
       "\"            var match = pd_controls.command.match(/display\\\\((\\\\w*),/);\\n\"+\n",
       "\"            if (match){\\n\"+\n",
       "\"                entity = match[1];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (entity){\\n\"+\n",
       "\"            var prolog = \\\"\\\";\\n\"+\n",
       "\"            if (!execInfo.script_run_raw){\\n\"+\n",
       "\"                console.log(\\\"Inject self with entity\\\", entity);\\n\"+\n",
       "\"                prolog = \\\"from pixiedust.utils.shellAccess import ShellAccess\\\\n\\\"+\\n\"+\n",
       "\"                    \\\"self=ShellAccess['\\\" + entity + \\\"']\\\\n\\\";\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            execInfo.script = prolog +\\n\"+\n",
       "\"                resolveScriptMacros( getParentScript(element) ) + '\\\\n' +\\n\"+\n",
       "\"                resolveScriptMacros(execInfo.script);\\n\"+\n",
       "\"            if ( execInfo.pixieapp){\\n\"+\n",
       "\"                var locOptions = execInfo.options;\\n\"+\n",
       "\"                locOptions.cell_id = pd_controls.options.cell_id;\\n\"+\n",
       "\"                locOptions.prefix = pd_controls.prefix;\\n\"+\n",
       "\"                if (pd_controls.options.nostore_cw){\\n\"+\n",
       "\"                    locOptions.nostore_cw = pd_controls.options.nostore_cw\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                function makePythonStringOrNone(s){\\n\"+\n",
       "\"                    return !s?\\\"None\\\":('\\\"\\\"\\\"' + s + '\\\"\\\"\\\"')\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                function getCellMetadata(){\\n\"+\n",
       "\"                    var cell = pixiedust.getCell(execInfo.options.cell_id);\\n\"+\n",
       "\"                    var retValue = cell?cell._metadata:{};\\n\"+\n",
       "\"                    return JSON.stringify(retValue || {});\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                execInfo.script += \\\"\\\\nfrom pixiedust.display.app.pixieapp import runPixieApp\\\" + \\n\"+\n",
       "\"                    \\\"\\\\ntrue=True\\\\nfalse=False\\\\nnull=None\\\" +\\n\"+\n",
       "\"                    \\\"\\\\nrunPixieApp('\\\" + \\n\"+\n",
       "\"                    execInfo.pixieapp + \\\"', options=\\\" + JSON.stringify(locOptions) \\n\"+\n",
       "\"                    + \\\",parent_command=\\\" + makePythonStringOrNone(applyEntity(pd_controls.command, execInfo.entity, execInfo.options))\\n\"+\n",
       "\"                    + \\\",parent_pixieapp=\\\" + makePythonStringOrNone(pd_controls.options.nostore_pixieapp)\\n\"+\n",
       "\"                    + \\\",cell_metadata=\\\" + getCellMetadata()\\n\"+\n",
       "\"                    + \\\")\\\";\\n\"+\n",
       "\"            }else if ( ( hasOptions || execInfo.refresh || execInfo.entity || execInfo.options.widget) && \\n\"+\n",
       "\"                    !execInfo.norefresh && $(element).children(\\\"target[pd_target]\\\").length == 0){\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                execInfo.script += \\\"\\\\n\\\" + applyEntity(pd_controls.command, execInfo.entity, execInfo.options)\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                execInfo.targetDivId=execInfo.targetDivId || \\\"pixiedust_dummy\\\";\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            console.log(\\\"Unable to extract entity variable from command\\\", pd_controls.command);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (!hasOptions && !execInfo.targetDivId && !execInfo.script){\\n\"+\n",
       "\"        if (!searchParents){\\n\"+\n",
       "\"            return null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return element.hasAttribute(\\\"pixiedust\\\")?null:readExecInfo(pd_controls, element.parentElement);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (!execInfo.script){\\n\"+\n",
       "\"        execInfo.script = applyEntity(pd_controls.command, execInfo.entity, execInfo.options);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    execInfo.nostoreMedatadata = true;\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    if ( pixiedust.dialogRoot ){\\n\"+\n",
       "\"        execInfo.targetDivId = execInfo.targetDivId || pixiedust.dialogRoot;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (\\\"send_input_reply\\\" in execInfo.options){\\n\"+\n",
       "\"        execInfo.send_input_reply = execInfo.options[\\\"send_input_reply\\\"];\\n\"+\n",
       "\"        delete execInfo.options[\\\"send_input_reply\\\"];\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (\\\"answer_input_reply\\\" in execInfo.options){\\n\"+\n",
       "\"        execInfo.answer_input_reply = execInfo.options[\\\"answer_input_reply\\\"];\\n\"+\n",
       "\"        delete execInfo.options[\\\"answer_input_reply\\\"];\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    execInfo.execute = function(){\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        if (!preRun(element)){\\n\"+\n",
       "\"            return;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"\\n\"+\n",
       "\"        pd_controls.sniffers = pd_controls.sniffers || [];\\n\"+\n",
       "\"        pd_controls.sniffers.forEach(function(sniffer){\\n\"+\n",
       "\"            if (this.script){\\n\"+\n",
       "\"                this.script = addOptions(this.script, eval('(' + sniffer + ')'));\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                pd_controls.command = addOptions(pd_controls.command, eval('(' + sniffer + ')'));\\n\"+\n",
       "\"            }    \\n\"+\n",
       "\"        }.bind(this));\\n\"+\n",
       "\"\\n\"+\n",
       "\"        var process_output = getScriptOfType(element, \\\"process_output\\\");\\n\"+\n",
       "\"        if (!process_output){\\n\"+\n",
       "\"            process_output = getScriptOfType($(\\\"#\\\" + this.targetDivId), \\\"process_output\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (process_output){\\n\"+\n",
       "\"            this.process_output = function(output){\\n\"+\n",
       "\"                new Function('output', process_output)(output);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if ( this.options.dialog == 'true' ){\\n\"+\n",
       "\"            pixiedust.executeInDialog(pd_controls, this);\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            pixiedust.executeDisplay(pd_controls, this);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var refreshTarget = element.getAttribute(\\\"pd_refresh\\\");\\n\"+\n",
       "\"    if (refreshTarget){\\n\"+\n",
       "\"        if (execInfo.targetDivId == \\\"pixiedust_dummy\\\"){\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            execInfo.targetDivId = \\\"pixiedust_dummy2\\\";\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        var retQueue = [execInfo];\\n\"+\n",
       "\"        var targets = refreshTarget.split(\\\",\\\");\\n\"+\n",
       "\"        $.each( targets, function(index){\\n\"+\n",
       "\"            var node = $(\\\"#\\\" + this);\\n\"+\n",
       "\"            if (node.length){\\n\"+\n",
       "\"                pd_controls.refreshTarget = this;\\n\"+\n",
       "\"                var thisexecInfo = {\\\"options\\\":{}};\\n\"+\n",
       "\"                thisexecInfo.options.targetDivId = this;\\n\"+\n",
       "\"                retQueue.push( readExecInfo(pd_controls, node.get(0), false, thisexecInfo) );\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        return retQueue\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    console.log(\\\"execution info: \\\", execInfo);\\n\"+\n",
       "\"    return execInfo;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function runElement(element, searchParents){\\n\"+\n",
       "\"    var pd_controls = element.getAttribute(\\\"pixiedust\\\");\\n\"+\n",
       "\"    if (!pd_controls){\\n\"+\n",
       "\"        $(element).parents(\\\"[pixiedust]\\\").each(function(){\\n\"+\n",
       "\"            pd_controls = pd_controls || this.getAttribute(\\\"pixiedust\\\");\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var execQueue = [];\\n\"+\n",
       "\"    function addToQueue(execInfo){\\n\"+\n",
       "\"        if (Array.isArray(execInfo)){\\n\"+\n",
       "\"            execInfo.forEach(function(exec){\\n\"+\n",
       "\"                addToQueue(exec);\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            execQueue.push(execInfo);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (pd_controls){\\n\"+\n",
       "\"        pd_controls = JSON.parse(pd_controls);\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        addToQueue( readExecInfo(pd_controls, element, searchParents) );\\n\"+\n",
       "\"\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $(element).children(\\\"target[pd_target]\\\").each(function(){\\n\"+\n",
       "\"            addToQueue( readExecInfo(pd_controls, this, searchParents))\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return execQueue;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function filterNonTargetElements(element){\\n\"+\n",
       "\"    if (element && [\\\"I\\\", \\\"DIV\\\"].includes(element.tagName)){\\n\"+\n",
       "\"        if (!element.hasAttribute(\\\"pd_options\\\") || $(element).find(\\\"> pd_options\\\").length == 0 || element.hasAttribute(\\\"pd_render_onload\\\")){\\n\"+\n",
       "\"            return filterNonTargetElements(element.parentElement);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return element;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readJSONAttribute(element, attrName){\\n\"+\n",
       "\"    var payload = resolveScriptMacros(element.getAttribute(attrName));\\n\"+\n",
       "\"    if (payload){\\n\"+\n",
       "\"        var parts = payload.split(\\\";\\\");\\n\"+\n",
       "\"        payload = {};\\n\"+\n",
       "\"        $.each( parts, function(){\\n\"+\n",
       "\"            var index = this.indexOf(\\\"=\\\");\\n\"+\n",
       "\"            if ( index > 0){\\n\"+\n",
       "\"                payload[this.substring(0, index)] = this.substring(index+1);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }else{\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $(element).find(\\\"> \\\" + attrName).each(function(){\\n\"+\n",
       "\"            try{\\n\"+\n",
       "\"                payload = JSON.parse($(this).text());\\n\"+\n",
       "\"                for (var key in payload) { \\n\"+\n",
       "\"                    payload[key] = resolveScriptMacros(payload[key]); \\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }catch(e){\\n\"+\n",
       "\"                console.log(\\\"Error parsing \\\" + attrName + \\\", invalid json\\\", e);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        })\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return payload;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"\\n\"+\n",
       "\"function processEvent(event){\\n\"+\n",
       "\"    if (event.pd_processed){\\n\"+\n",
       "\"        return;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var payload = readJSONAttribute(event.target, \\\"pd_event_payload\\\");\\n\"+\n",
       "\"    if (payload){\\n\"+\n",
       "\"        pixiedust.sendEvent(payload, $(event.target).uniqueId().attr('id'));\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execQueue = runElement(filterNonTargetElements(event.target));\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $.each( execQueue, function(index, value){\\n\"+\n",
       "\"        if (value){\\n\"+\n",
       "\"            event.pd_processed = true;\\n\"+\n",
       "\"            value.execute();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"}\\n\"+\n",
       "\"$(document).on( \\\"click\\\", \\\"[pixiedust]\\\", function(event){\\n\"+\n",
       "\"    if (event.target.tagName == \\\"SELECT\\\" || \\n\"+\n",
       "\"        (event.target.tagName == \\\"INPUT\\\" && (getAttribute(event.target, \\\"type\\\", \\\"\\\").toLowerCase() != \\\"button\\\")) || \\n\"+\n",
       "\"        $(event.target).is(':checkbox')){\\n\"+\n",
       "\"        return;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    processEvent(event)\\n\"+\n",
       "\"});\\n\"+\n",
       "\"\\n\"+\n",
       "\"$(document).on( \\\"change\\\", \\\"[pixiedust]\\\", function(event){\\n\"+\n",
       "\"    processEvent(event)\\n\"+\n",
       "\"});\\n\"+\n",
       "\"\\n\"+\n",
       "\"\\n\"+\n",
       "\"$(document).on(\\\"pd_event\\\", function(event, eventInfo){\\n\"+\n",
       "\"    targetDivId = eventInfo.targetDivId;\\n\"+\n",
       "\"    if (targetDivId){\\n\"+\n",
       "\"        eventHandlers = $(\\\"pd_event_handler\\\").filter(function(){\\n\"+\n",
       "\"            source = this.getAttribute(\\\"pd_source\\\");\\n\"+\n",
       "\"            if (source == \\\"*\\\" || source == targetDivId || source == eventInfo.type){\\n\"+\n",
       "\"                return true;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            return $(this).parents(\\\"[pd_target]\\\").filter(function(){\\n\"+\n",
       "\"                return this.getAttribute(\\\"pd_target\\\") == targetDivId;\\n\"+\n",
       "\"            }).length > 0;\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        eventHandlers.each(function(){\\n\"+\n",
       "\"            execQueue = runElement(this, false);\\n\"+\n",
       "\"            $.each( execQueue, function(index, value){\\n\"+\n",
       "\"                if (value){\\n\"+\n",
       "\"                    if (value.targetDivId == \\\"pixiedust_dummy\\\"){\\n\"+\n",
       "\"                        value.targetDivId = null;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    if (value.script){\\n\"+\n",
       "\"                        value.script = \\\"true=True\\\\nfalse=False\\\\neventInfo=\\\"+JSON.stringify(eventInfo) + \\\"\\\\n\\\" + value.script;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    value.execute();\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }else if ( eventInfo.type == \\\"pd_load\\\" && eventInfo.targetNode){\\n\"+\n",
       "\"        var execQueue = []\\n\"+\n",
       "\"        function accept(element){\\n\"+\n",
       "\"            return element.hasAttribute(\\\"pd_widget\\\") || element.hasAttribute(\\\"pd_render_onload\\\") || element.hasAttribute(\\\"pd_refresh_rate\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        eventInfo.targetNode.find(\\\"div\\\").each(function(){\\n\"+\n",
       "\"            if (accept(this)){\\n\"+\n",
       "\"                var thisId = $(this).uniqueId().attr('id');\\n\"+\n",
       "\"                this.setAttribute( \\\"id\\\", thisId );\\n\"+\n",
       "\"                if (!this.hasAttribute(\\\"pd_target\\\") ){\\n\"+\n",
       "\"                    this.setAttribute(\\\"pd_target\\\", this.getAttribute(\\\"id\\\") );\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                thisQueue = runElement(this, false);\\n\"+\n",
       "\"                var loadingDiv = this;\\n\"+\n",
       "\"                $.each( thisQueue, function(index, value){\\n\"+\n",
       "\"                    if (value){\\n\"+\n",
       "\"                        value.partialUpdate = true;\\n\"+\n",
       "\"                        execQueue.push( value );\\n\"+\n",
       "\"                        refreshRate = loadingDiv.getAttribute(\\\"pd_refresh_rate\\\");\\n\"+\n",
       "\"                        if (refreshRate){\\n\"+\n",
       "\"                            var ival = setInterval(function(){\\n\"+\n",
       "\"                                if ($('#' + thisId).length == 0){\\n\"+\n",
       "\"                                    console.log(\\\"Clearing refresh timer\\\", ival);\\n\"+\n",
       "\"                                    clearInterval(ival);\\n\"+\n",
       "\"                                    return;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                                value.execute();\\n\"+\n",
       "\"                            }, parseInt( refreshRate) );\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                })\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $.each( execQueue, function(index, value){\\n\"+\n",
       "\"            value.execute();\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    else{\\n\"+\n",
       "\"        if ( eventInfo.type != \\\"pd_load\\\"){\\n\"+\n",
       "\"            console.log(\\\"Warning: got a pd_event with no targetDivId\\\", eventInfo);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"});\";\n",
       "    try{\n",
       "        g.appendChild(document.createTextNode(code));\n",
       "    }catch(e){\n",
       "        g.text = code;\n",
       "    }\n",
       "    s.parentNode.insertBefore(g,s);\n",
       "}"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                    \n",
       "\n",
       "<style>\n",
       "\n",
       "</style>\n",
       "\n",
       "<div id=\"fig_el1087851586828327878503796\"></div>\n",
       "<script>\n",
       "function mpld3_load_lib(url, callback){\n",
       "  var s = document.createElement('script');\n",
       "  s.src = url;\n",
       "  s.async = true;\n",
       "  s.onreadystatechange = s.onload = callback;\n",
       "  s.onerror = function(){console.warn(\"failed to load library \" + url);};\n",
       "  document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "}\n",
       "\n",
       "if(typeof(mpld3) !== \"undefined\" && mpld3._mpld3IsLoaded){\n",
       "   // already loaded: just create the figure\n",
       "   !function(mpld3){\n",
       "       // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions850663c0\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title850663c0\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title850663c0\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields850663c0\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field850663c0-f6\" class=\"field850663c0\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f2\" class=\"field850663c0\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f3\" class=\"field850663c0\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f4\" class=\"field850663c0\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f1\" class=\"field850663c0\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f9\" class=\"field850663c0\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f8\" class=\"field850663c0\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f5\" class=\"field850663c0\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f7\" class=\"field850663c0\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields850663c0\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f9-keyFields850663c0\" data-field=\"name\">name<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields850663c0\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f1-valueFields850663c0\" data-field=\"mpg\">mpg<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f3-valueFields850663c0\" data-field=\"engine\">engine<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields850663c0\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML850663c0');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML850663c0');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution850663c0\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution850663c0\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution850663c0\").length > 0 ){\n",
       "                    $(\"#execution850663c0\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone850663c0 != \"undefined\"){\n",
       "                    onDisplayDone850663c0();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='subplots',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='850663c0',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields850663c0'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields850663c0'));\n",
       "$('#chartOptions850663c0 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions850663c0 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS850663c0').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields850663c0').length && $('#valueFields850663c0').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields850663c0').length && $('#keyFields850663c0').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions850663c0 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field850663c0').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field850663c0-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields850663c0, #valueFields850663c0').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field850663c0');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-850663c0').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "       mpld3.draw_figure(\"fig_el1087851586828327878503796\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.46832842776551387], \"rotation\": -0.0, \"id\": \"el108785157156752\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785157433040\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8105336519315013, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785160300240\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1060.5], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785153262608\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785153263504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785153527056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785153528976\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785159780240\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785153313488\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785153315408\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785153316560\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785153449744\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785153451408\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785159384144\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785159385808\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785159387088\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785159446544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785159448208\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785159507280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785159508944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785159555728\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785159557392\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785159559056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785160298064\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155104464\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785153263184\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785157201488\", \"ydomain\": [0.0, 1060.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.35227272727272724, 0.755]}, {\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.32099432203730915], \"rotation\": -0.0, \"id\": \"el108785153572304\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785159819728\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.16208681800079638, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785155103248\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 163.38], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785160300432\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785160350864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785160352528\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785160407504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785160409168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785160410832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785160461712\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785160463376\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785160514256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785160515920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785160517584\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785161932432\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785161934096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785161984976\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785161986640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785161987920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785162039184\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785162040848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108784570782160\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785155064848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155063760\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data20\", \"id\": \"el108785155104720\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785155105616\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 8, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785153490448\", \"ydomain\": [0.0, 163.38], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.5477272727272726, 0.125, 0.3522727272727273, 0.755]}], \"height\": 216.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data21\": [[0.6791119076065312, 0.8589649251900908, 0.03066507367582627], [0.9693349263241736, 0.8589649251900908, 0.26831939466348076], [0.9780963759458382, 0.8589649251900908, 0.27708084428514534], [0.9780963759458382, 0.8712288447387786, 0.27708084428514534], [0.9780963759458382, 0.957076281579593, 0.27708084428514534], [0.9780963759458382, 0.9693402011282806, 0.27708084428514534], [0.9693349263241736, 0.9693402011282806, 0.26831939466348076], [0.6791119076065312, 0.9693402011282806, 0.03066507367582627], [0.6703504579848666, 0.9693402011282806, 0.021903624054161686], [0.6703504579848666, 0.957076281579593, 0.021903624054161686], [0.6703504579848666, 0.8712288447387786, 0.021903624054161686], [0.6703504579848666, 0.8589649251900908, 0.021903624054161686], [0.6791119076065312, 0.8589649251900908, 0.03066507367582627]], \"data12\": [[10.75, 0.0, 0.0], [11.25, 0.0, 0.0], [11.25, 400.0, 12.0], [10.75, 400.0, 12.0]], \"data16\": [[15.75, 0.0, 0.0], [16.25, 0.0, 0.0], [16.25, 142.0, 63.0], [15.75, 142.0, 63.0]], \"data11\": [[9.75, 0.0, 0.0], [10.25, 0.0, 0.0], [10.25, 318.0, 11.0], [9.75, 318.0, 11.0]], \"data17\": [[16.75, 0.0, 0.0], [17.25, 0.0, 0.0], [17.25, 79.0, 39.1], [16.75, 79.0, 39.1]], \"data14\": [[12.75, 0.0, 0.0], [13.25, 0.0, 0.0], [13.25, 491.0, 94.2], [12.75, 491.0, 94.2]], \"data10\": [[8.75, 0.0, 0.0], [9.25, 0.0, 0.0], [9.25, 98.0, 28.0], [8.75, 98.0, 28.0]], \"data15\": [[14.75, 0.0, 0.0], [15.25, 0.0, 0.0], [15.25, 518.0, 155.6], [14.75, 518.0, 155.6]], \"data20\": [[0.6878733572281958, 0.8957566838361541, 0.03942652329749108], [0.7754878534448425, 0.8957566838361541, 0.12704101951413782], [0.7754878534448425, 0.9386804022565614, 0.12704101951413782], [0.6878733572281958, 0.9386804022565614, 0.03942652329749108]], \"data19\": [[19.75, 0.0, 0.0], [20.25, 0.0, 0.0], [20.25, 187.0, 58.5], [19.75, 187.0, 58.5]], \"data18\": [[17.75, 0.0, 0.0], [18.25, 0.0, 0.0], [18.25, 89.0, 37.7], [17.75, 89.0, 37.7]], \"data08\": [[6.75, 0.0, 0.0], [7.25, 0.0, 0.0], [7.25, 156.0, 25.8], [6.75, 156.0, 25.8]], \"data09\": [[7.75, 0.0, 13.75, 0.0, 0.0], [8.25, 0.0, 14.25, 0.0, 0.0], [8.25, 225.0, 14.25, 20.6, 18.0], [7.75, 225.0, 13.75, 20.6, 18.0]], \"data06\": [[4.75, 0.0, 0.0], [5.25, 0.0, 0.0], [5.25, 262.0, 20.0], [4.75, 262.0, 20.0]], \"data07\": [[5.75, 0.0, 0.0], [6.25, 0.0, 0.0], [6.25, 250.0, 16.0], [5.75, 250.0, 16.0]], \"data04\": [[2.75, 0.0, 0.0], [3.25, 0.0, 0.0], [3.25, 112.0, 27.0], [2.75, 112.0, 27.0]], \"data05\": [[3.75, 0.0, 0.0], [4.25, 0.0, 0.0], [4.25, 555.0, 33.5], [3.75, 555.0, 33.5]], \"data02\": [[0.75, 0.0, 0.0], [1.25, 0.0, 0.0], [1.25, 121.0, 21.5], [0.75, 121.0, 21.5]], \"data03\": [[1.75, 0.0, 0.0], [2.25, 0.0, 0.0], [2.25, 1010.0, 47.5], [1.75, 1010.0, 47.5]], \"data13\": [[11.75, 0.0, 0.0], [12.25, 0.0, 0.0], [12.25, 120.0, 36.0], [11.75, 120.0, 36.0]], \"data01\": [[-0.25, 0.0, 18.75, 0.0, 0.0], [0.25, 0.0, 19.25, 0.0, 0.0], [0.25, 97.0, 19.25, 34.3, 27.0], [-0.25, 97.0, 18.75, 34.3, 27.0]]}, \"id\": \"el108785158682832\"});\n",
       "   }(mpld3);\n",
       "}else if(typeof define === \"function\" && define.amd){\n",
       "   // require.js is available: use it to load d3/mpld3\n",
       "   require.config({paths: {d3: \"https://mpld3.github.io/js/d3.v3.min\"}});\n",
       "   require([\"d3\"], function(d3){\n",
       "      window.d3 = d3;\n",
       "      mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "         // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions850663c0\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title850663c0\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title850663c0\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields850663c0\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field850663c0-f6\" class=\"field850663c0\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f2\" class=\"field850663c0\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f3\" class=\"field850663c0\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f4\" class=\"field850663c0\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f1\" class=\"field850663c0\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f9\" class=\"field850663c0\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f8\" class=\"field850663c0\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f5\" class=\"field850663c0\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f7\" class=\"field850663c0\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields850663c0\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f9-keyFields850663c0\" data-field=\"name\">name<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields850663c0\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f1-valueFields850663c0\" data-field=\"mpg\">mpg<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f3-valueFields850663c0\" data-field=\"engine\">engine<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields850663c0\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML850663c0');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML850663c0');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution850663c0\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution850663c0\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution850663c0\").length > 0 ){\n",
       "                    $(\"#execution850663c0\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone850663c0 != \"undefined\"){\n",
       "                    onDisplayDone850663c0();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='subplots',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='850663c0',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields850663c0'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields850663c0'));\n",
       "$('#chartOptions850663c0 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions850663c0 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS850663c0').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields850663c0').length && $('#valueFields850663c0').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields850663c0').length && $('#keyFields850663c0').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions850663c0 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field850663c0').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field850663c0-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields850663c0, #valueFields850663c0').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field850663c0');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-850663c0').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "         mpld3.draw_figure(\"fig_el1087851586828327878503796\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.46832842776551387], \"rotation\": -0.0, \"id\": \"el108785157156752\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785157433040\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8105336519315013, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785160300240\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1060.5], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785153262608\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785153263504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785153527056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785153528976\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785159780240\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785153313488\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785153315408\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785153316560\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785153449744\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785153451408\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785159384144\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785159385808\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785159387088\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785159446544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785159448208\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785159507280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785159508944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785159555728\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785159557392\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785159559056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785160298064\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155104464\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785153263184\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785157201488\", \"ydomain\": [0.0, 1060.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.35227272727272724, 0.755]}, {\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.32099432203730915], \"rotation\": -0.0, \"id\": \"el108785153572304\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785159819728\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.16208681800079638, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785155103248\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 163.38], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785160300432\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785160350864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785160352528\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785160407504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785160409168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785160410832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785160461712\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785160463376\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785160514256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785160515920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785160517584\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785161932432\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785161934096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785161984976\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785161986640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785161987920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785162039184\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785162040848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108784570782160\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785155064848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155063760\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data20\", \"id\": \"el108785155104720\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785155105616\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 8, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785153490448\", \"ydomain\": [0.0, 163.38], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.5477272727272726, 0.125, 0.3522727272727273, 0.755]}], \"height\": 216.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data21\": [[0.6791119076065312, 0.8589649251900908, 0.03066507367582627], [0.9693349263241736, 0.8589649251900908, 0.26831939466348076], [0.9780963759458382, 0.8589649251900908, 0.27708084428514534], [0.9780963759458382, 0.8712288447387786, 0.27708084428514534], [0.9780963759458382, 0.957076281579593, 0.27708084428514534], [0.9780963759458382, 0.9693402011282806, 0.27708084428514534], [0.9693349263241736, 0.9693402011282806, 0.26831939466348076], [0.6791119076065312, 0.9693402011282806, 0.03066507367582627], [0.6703504579848666, 0.9693402011282806, 0.021903624054161686], [0.6703504579848666, 0.957076281579593, 0.021903624054161686], [0.6703504579848666, 0.8712288447387786, 0.021903624054161686], [0.6703504579848666, 0.8589649251900908, 0.021903624054161686], [0.6791119076065312, 0.8589649251900908, 0.03066507367582627]], \"data12\": [[10.75, 0.0, 0.0], [11.25, 0.0, 0.0], [11.25, 400.0, 12.0], [10.75, 400.0, 12.0]], \"data16\": [[15.75, 0.0, 0.0], [16.25, 0.0, 0.0], [16.25, 142.0, 63.0], [15.75, 142.0, 63.0]], \"data11\": [[9.75, 0.0, 0.0], [10.25, 0.0, 0.0], [10.25, 318.0, 11.0], [9.75, 318.0, 11.0]], \"data17\": [[16.75, 0.0, 0.0], [17.25, 0.0, 0.0], [17.25, 79.0, 39.1], [16.75, 79.0, 39.1]], \"data14\": [[12.75, 0.0, 0.0], [13.25, 0.0, 0.0], [13.25, 491.0, 94.2], [12.75, 491.0, 94.2]], \"data10\": [[8.75, 0.0, 0.0], [9.25, 0.0, 0.0], [9.25, 98.0, 28.0], [8.75, 98.0, 28.0]], \"data15\": [[14.75, 0.0, 0.0], [15.25, 0.0, 0.0], [15.25, 518.0, 155.6], [14.75, 518.0, 155.6]], \"data20\": [[0.6878733572281958, 0.8957566838361541, 0.03942652329749108], [0.7754878534448425, 0.8957566838361541, 0.12704101951413782], [0.7754878534448425, 0.9386804022565614, 0.12704101951413782], [0.6878733572281958, 0.9386804022565614, 0.03942652329749108]], \"data19\": [[19.75, 0.0, 0.0], [20.25, 0.0, 0.0], [20.25, 187.0, 58.5], [19.75, 187.0, 58.5]], \"data18\": [[17.75, 0.0, 0.0], [18.25, 0.0, 0.0], [18.25, 89.0, 37.7], [17.75, 89.0, 37.7]], \"data08\": [[6.75, 0.0, 0.0], [7.25, 0.0, 0.0], [7.25, 156.0, 25.8], [6.75, 156.0, 25.8]], \"data09\": [[7.75, 0.0, 13.75, 0.0, 0.0], [8.25, 0.0, 14.25, 0.0, 0.0], [8.25, 225.0, 14.25, 20.6, 18.0], [7.75, 225.0, 13.75, 20.6, 18.0]], \"data06\": [[4.75, 0.0, 0.0], [5.25, 0.0, 0.0], [5.25, 262.0, 20.0], [4.75, 262.0, 20.0]], \"data07\": [[5.75, 0.0, 0.0], [6.25, 0.0, 0.0], [6.25, 250.0, 16.0], [5.75, 250.0, 16.0]], \"data04\": [[2.75, 0.0, 0.0], [3.25, 0.0, 0.0], [3.25, 112.0, 27.0], [2.75, 112.0, 27.0]], \"data05\": [[3.75, 0.0, 0.0], [4.25, 0.0, 0.0], [4.25, 555.0, 33.5], [3.75, 555.0, 33.5]], \"data02\": [[0.75, 0.0, 0.0], [1.25, 0.0, 0.0], [1.25, 121.0, 21.5], [0.75, 121.0, 21.5]], \"data03\": [[1.75, 0.0, 0.0], [2.25, 0.0, 0.0], [2.25, 1010.0, 47.5], [1.75, 1010.0, 47.5]], \"data13\": [[11.75, 0.0, 0.0], [12.25, 0.0, 0.0], [12.25, 120.0, 36.0], [11.75, 120.0, 36.0]], \"data01\": [[-0.25, 0.0, 18.75, 0.0, 0.0], [0.25, 0.0, 19.25, 0.0, 0.0], [0.25, 97.0, 19.25, 34.3, 27.0], [-0.25, 97.0, 18.75, 34.3, 27.0]]}, \"id\": \"el108785158682832\"});\n",
       "      });\n",
       "    });\n",
       "}else{\n",
       "    // require.js not available: dynamically load d3 & mpld3\n",
       "    mpld3_load_lib(\"https://mpld3.github.io/js/d3.v3.min.js\", function(){\n",
       "         mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "                 // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions850663c0\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title850663c0\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title850663c0\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields850663c0\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field850663c0-f6\" class=\"field850663c0\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f2\" class=\"field850663c0\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f3\" class=\"field850663c0\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f4\" class=\"field850663c0\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f1\" class=\"field850663c0\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f9\" class=\"field850663c0\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f8\" class=\"field850663c0\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f5\" class=\"field850663c0\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field850663c0-f7\" class=\"field850663c0\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field850663c0-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields850663c0\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f9-keyFields850663c0\" data-field=\"name\">name<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields850663c0\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f1-valueFields850663c0\" data-field=\"mpg\">mpg<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field850663c0-f3-valueFields850663c0\" data-field=\"engine\">engine<a class=\"field850663c0-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields850663c0\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML850663c0');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML850663c0');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution850663c0\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution850663c0\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution850663c0\").length > 0 ){\n",
       "                    $(\"#execution850663c0\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone850663c0 != \"undefined\"){\n",
       "                    onDisplayDone850663c0();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='subplots',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='850663c0',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields850663c0'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields850663c0'));\n",
       "$('#chartOptions850663c0 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions850663c0 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS850663c0').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields850663c0').length && $('#valueFields850663c0').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields850663c0').length && $('#keyFields850663c0').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions850663c0 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field850663c0').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field850663c0-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields850663c0, #valueFields850663c0').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field850663c0');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-850663c0').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "                 mpld3.draw_figure(\"fig_el1087851586828327878503796\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.46832842776551387], \"rotation\": -0.0, \"id\": \"el108785157156752\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785157433040\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.8105336519315013, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785160300240\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1060.5], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785153262608\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785153263504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785153527056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785153528976\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785159780240\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785153313488\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785153315408\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785153316560\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785153449744\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785153451408\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785159384144\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785159385808\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785159387088\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785159446544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785159448208\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785159507280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785159508944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785159555728\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785159557392\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785159559056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785160298064\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155104464\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785153263184\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785157201488\", \"ydomain\": [0.0, 1060.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.35227272727272724, 0.755]}, {\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.49999999999999994, -0.32099432203730915], \"rotation\": -0.0, \"id\": \"el108785153572304\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 12.0, \"position\": [0.49999999999999994, 1.0367917586460633], \"rotation\": -0.0, \"id\": \"el108785159819728\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.16208681800079638, 0.8957566838361541], \"rotation\": -0.0, \"id\": \"el108785155103248\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 163.38], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785160300432\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785160350864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785160352528\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785160407504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785160409168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785160410832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785160461712\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785160463376\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785160514256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785160515920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785160517584\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785161932432\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785161934096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785161984976\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785161986640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785161987920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785162039184\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785162040848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108784570782160\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785155064848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155063760\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data20\", \"id\": \"el108785155104720\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 2, \"data\": \"data21\", \"id\": \"el108785155105616\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 8, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785153490448\", \"ydomain\": [0.0, 163.38], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.5477272727272726, 0.125, 0.3522727272727273, 0.755]}], \"height\": 216.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data21\": [[0.6791119076065312, 0.8589649251900908, 0.03066507367582627], [0.9693349263241736, 0.8589649251900908, 0.26831939466348076], [0.9780963759458382, 0.8589649251900908, 0.27708084428514534], [0.9780963759458382, 0.8712288447387786, 0.27708084428514534], [0.9780963759458382, 0.957076281579593, 0.27708084428514534], [0.9780963759458382, 0.9693402011282806, 0.27708084428514534], [0.9693349263241736, 0.9693402011282806, 0.26831939466348076], [0.6791119076065312, 0.9693402011282806, 0.03066507367582627], [0.6703504579848666, 0.9693402011282806, 0.021903624054161686], [0.6703504579848666, 0.957076281579593, 0.021903624054161686], [0.6703504579848666, 0.8712288447387786, 0.021903624054161686], [0.6703504579848666, 0.8589649251900908, 0.021903624054161686], [0.6791119076065312, 0.8589649251900908, 0.03066507367582627]], \"data12\": [[10.75, 0.0, 0.0], [11.25, 0.0, 0.0], [11.25, 400.0, 12.0], [10.75, 400.0, 12.0]], \"data16\": [[15.75, 0.0, 0.0], [16.25, 0.0, 0.0], [16.25, 142.0, 63.0], [15.75, 142.0, 63.0]], \"data11\": [[9.75, 0.0, 0.0], [10.25, 0.0, 0.0], [10.25, 318.0, 11.0], [9.75, 318.0, 11.0]], \"data17\": [[16.75, 0.0, 0.0], [17.25, 0.0, 0.0], [17.25, 79.0, 39.1], [16.75, 79.0, 39.1]], \"data14\": [[12.75, 0.0, 0.0], [13.25, 0.0, 0.0], [13.25, 491.0, 94.2], [12.75, 491.0, 94.2]], \"data10\": [[8.75, 0.0, 0.0], [9.25, 0.0, 0.0], [9.25, 98.0, 28.0], [8.75, 98.0, 28.0]], \"data15\": [[14.75, 0.0, 0.0], [15.25, 0.0, 0.0], [15.25, 518.0, 155.6], [14.75, 518.0, 155.6]], \"data20\": [[0.6878733572281958, 0.8957566838361541, 0.03942652329749108], [0.7754878534448425, 0.8957566838361541, 0.12704101951413782], [0.7754878534448425, 0.9386804022565614, 0.12704101951413782], [0.6878733572281958, 0.9386804022565614, 0.03942652329749108]], \"data19\": [[19.75, 0.0, 0.0], [20.25, 0.0, 0.0], [20.25, 187.0, 58.5], [19.75, 187.0, 58.5]], \"data18\": [[17.75, 0.0, 0.0], [18.25, 0.0, 0.0], [18.25, 89.0, 37.7], [17.75, 89.0, 37.7]], \"data08\": [[6.75, 0.0, 0.0], [7.25, 0.0, 0.0], [7.25, 156.0, 25.8], [6.75, 156.0, 25.8]], \"data09\": [[7.75, 0.0, 13.75, 0.0, 0.0], [8.25, 0.0, 14.25, 0.0, 0.0], [8.25, 225.0, 14.25, 20.6, 18.0], [7.75, 225.0, 13.75, 20.6, 18.0]], \"data06\": [[4.75, 0.0, 0.0], [5.25, 0.0, 0.0], [5.25, 262.0, 20.0], [4.75, 262.0, 20.0]], \"data07\": [[5.75, 0.0, 0.0], [6.25, 0.0, 0.0], [6.25, 250.0, 16.0], [5.75, 250.0, 16.0]], \"data04\": [[2.75, 0.0, 0.0], [3.25, 0.0, 0.0], [3.25, 112.0, 27.0], [2.75, 112.0, 27.0]], \"data05\": [[3.75, 0.0, 0.0], [4.25, 0.0, 0.0], [4.25, 555.0, 33.5], [3.75, 555.0, 33.5]], \"data02\": [[0.75, 0.0, 0.0], [1.25, 0.0, 0.0], [1.25, 121.0, 21.5], [0.75, 121.0, 21.5]], \"data03\": [[1.75, 0.0, 0.0], [2.25, 0.0, 0.0], [2.25, 1010.0, 47.5], [1.75, 1010.0, 47.5]], \"data13\": [[11.75, 0.0, 0.0], [12.25, 0.0, 0.0], [12.25, 120.0, 36.0], [11.75, 120.0, 36.0]], \"data01\": [[-0.25, 0.0, 18.75, 0.0, 0.0], [0.25, 0.0, 19.25, 0.0, 0.0], [0.25, 97.0, 19.25, 34.3, 27.0], [-0.25, 97.0, 18.75, 34.3, 27.0]]}, \"id\": \"el108785158682832\"});\n",
       "            })\n",
       "         });\n",
       "}\n",
       "</script>\n",
       "                    \n",
       "                        <div>Some labels are not displayed because of a lack of space. Click on Stretch image to see them all</div>\n",
       "                    \n",
       "                        <div>Some labels are not displayed because of a lack of space. Click on Stretch image to see them all</div>\n",
       "                    \n",
       "                        <div>Warning: While great, D3 rendering is using MPLD3 library which has limitations that have not yet been fixed</div>\n",
       "                    \n",
       "                "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='subplots',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='850663c0')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "if (typeof pixiedust == \"undefined\"){\n",
       "    var s=document.getElementsByTagName('script')[0];\n",
       "    var g=document.createElement( 'style'  );\n",
       "    g.type='text/css';\n",
       "    g.defer=false; \n",
       "    g.async=false;\n",
       "    var code = \"pd_script,pd_dialog,pd_options,pd_target,pd_event_payload{\\n\"+\n",
       "\"    display:none\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".output_subarea.rendered_html {\\n\"+\n",
       "\"    max-width: 100%;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust {\\n\"+\n",
       "\"    border: 1px solid #ececec;\\n\"+\n",
       "\"    border-radius: 3px;\\n\"+\n",
       "\"    margin: 10px 0;\\n\"+\n",
       "\"    padding: 10px;\\n\"+\n",
       "\"\\n\"+\n",
       "\"    color: #333333;\\n\"+\n",
       "\"    font-size: small;\\n\"+\n",
       "\"    font-weight: 300;\\n\"+\n",
       "\"    letter-spacing: 0.5px;\\n\"+\n",
       "\"    line-height: normal;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-group {\\n\"+\n",
       "\"    border-right: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .display-type-button:not(:first-child) {\\n\"+\n",
       "\"    margin-left: 10px !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-default {\\n\"+\n",
       "\"    border-radius: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-toolbar .btn-default.focus,\\n\"+\n",
       "\".pixiedust-toolbar .btn-default:focus,\\n\"+\n",
       "\".pixiedust-toolbar .btn-default:hover,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default.focus,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default:focus,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default:hover {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #2e6da4;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu {\\n\"+\n",
       "\"    background-color: #ffffff;\\n\"+\n",
       "\"    border-color: rgba(0, 0, 0, 0.15);\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu ul {\\n\"+\n",
       "\"    list-style: outside none none;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li {\\n\"+\n",
       "\"    cursor: pointer;\\n\"+\n",
       "\"    padding: 8px 12px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li:hover {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"    cursor: pointer;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li > span {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    margin-left: 10px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn .fa-chevron-down {\\n\"+\n",
       "\"    margin-left: 25px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-group.open .dropdown-toggle {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #2e6da4;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog {\\n\"+\n",
       "\"    width: 50vw;\\n\"+\n",
       "\"    min-width: 700px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-default:focus,\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-default:hover {\\n\"+\n",
       "\"    background-color: #e6e6e6;\\n\"+\n",
       "\"    border-color: #adadad;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"    transition: background-color 0.15s ease-out 0s;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary:focus,\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary:hover {\\n\"+\n",
       "\"    background-color: #286090;\\n\"+\n",
       "\"    border-color: #204d74;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header .close {\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"    opacity: 1;\\n\"+\n",
       "\"    text-shadow: none;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header .close:hover {\\n\"+\n",
       "\"    opacity: 0.5;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-body {\\n\"+\n",
       "\"    padding: 25px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-footer .btn {\\n\"+\n",
       "\"    min-width: 75px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .executionTime {\\n\"+\n",
       "\"    color: gray;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .expandButton {\\n\"+\n",
       "\"    background-color: transparent;\\n\"+\n",
       "\"    border: 0 none;\\n\"+\n",
       "\"    font-size: 15px;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"    right: 0;\\n\"+\n",
       "\"    text-align: right;\\n\"+\n",
       "\"    top: 0;\\n\"+\n",
       "\"    width: 100%;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton:hover,\\n\"+\n",
       "\".pixiedust .expandButton:active,\\n\"+\n",
       "\".pixiedust .expandButton:focus {\\n\"+\n",
       "\"    background-color: transparent;\\n\"+\n",
       "\"    color: #337ab7;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton:not(.collapsed) {\\n\"+\n",
       "\"    float: right;\\n\"+\n",
       "\"    width: initial;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton > i.fa:before {\\n\"+\n",
       "\"    content: \\\"\\\\f066\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton.collapsed > i.fa:before {\\n\"+\n",
       "\"    content: \\\"\\\\f065\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton.collapsed:before {\\n\"+\n",
       "\"    color: #999999;\\n\"+\n",
       "\"    content: \\\"Pixiedust output minimized\\\";\\n\"+\n",
       "\"    float: left;\\n\"+\n",
       "\"    font-size: 14px;\\n\"+\n",
       "\"    font-style: italic;\\n\"+\n",
       "\"    font-weight: 300;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .chart-button-group {\\n\"+\n",
       "\"    border-bottom: 1px solid #ececec;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt {\\n\"+\n",
       "\"    margin: 6px 0;\\n\"+\n",
       "\"    padding: 6px 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt:first-child {\\n\"+\n",
       "\"    margin-top: 0;\\n\"+\n",
       "\"    padding-top: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox { padding-left: 20px; }\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"    padding-left: 5px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label::before {\\n\"+\n",
       "\"    content: \\\"\\\";\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: absolute;\\n\"+\n",
       "\"    width: 17px;\\n\"+\n",
       "\"    height: 17px;\\n\"+\n",
       "\"    left: 0;\\n\"+\n",
       "\"    margin-left: -20px;\\n\"+\n",
       "\"    border: 1px solid #cccccc;\\n\"+\n",
       "\"    background-color: #fff;\\n\"+\n",
       "\"    -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"    -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"    transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label::after {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: absolute;\\n\"+\n",
       "\"    width: 16px;\\n\"+\n",
       "\"    height: 16px;\\n\"+\n",
       "\"    left: 0;\\n\"+\n",
       "\"    top: 0;\\n\"+\n",
       "\"    margin-left: -20px;\\n\"+\n",
       "\"    padding-left: 2px;\\n\"+\n",
       "\"    padding-top: 1px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"] {\\n\"+\n",
       "\"    opacity: 0;\\n\"+\n",
       "\"    z-index: 1;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"]:focus + label::before {\\n\"+\n",
       "\"    outline: thin dotted;\\n\"+\n",
       "\"    outline: 5px auto -webkit-focus-ring-color;\\n\"+\n",
       "\"    outline-offset: -2px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"]:checked + label::after {\\n\"+\n",
       "\"    font-family: 'FontAwesome';\\n\"+\n",
       "\"    content: \\\"\\\\f00c\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox.checkbox-inline { margin-top: 0; }\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox-primary input[type=\\\"checkbox\\\"]:checked + label::before {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #337ab7;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox-primary input[type=\\\"checkbox\\\"]:checked + label::after {\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog {\\n\"+\n",
       "\"    width: 95% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog .pixiedust {\\n\"+\n",
       "\"    border: none;\\n\"+\n",
       "\"    height: calc(100vh - 200px);\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog .expandButton {\\n\"+\n",
       "\"    visibility: hidden;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .pixiedust-output-wrapper,\\n\"+\n",
       "\".pixiedust-app .pixiedustWrapperHTML,\\n\"+\n",
       "\".pixiedust-app [pixiedust]:not(.pixiedust) {\\n\"+\n",
       "\"    height: 100%;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-default-dialog .modal-dialog {\\n\"+\n",
       "\"  max-width: 1000px !important;\\n\"+\n",
       "\"  min-width: 600px !important;\\n\"+\n",
       "\"  width: 50% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-default-dialog .modal-dialog .pixiedust {\\n\"+\n",
       "\"  height: auto !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize.modal {\\n\"+\n",
       "\"    border: 0 none;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    padding: 0 !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize .modal-dialog {\\n\"+\n",
       "\"    height: 100% !important;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    overflow: hidden;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"    width: 100% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize .modal-dialog .pixiedust {\\n\"+\n",
       "\"    height: calc(100vh - 88px);\\n\"+\n",
       "\"    padding: 0px;\\n\"+\n",
       "\"}\";\n",
       "    try{\n",
       "        g.appendChild(document.createTextNode(code));\n",
       "    }catch(e){\n",
       "        g.text = code;\n",
       "    }\n",
       "    s.parentNode.insertBefore(g,s);\n",
       "}"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "if (typeof pixiedust == \"undefined\"){\n",
       "    var s=document.getElementsByTagName('script')[0];\n",
       "    var g=document.createElement( 'script'  );\n",
       "    g.type= 'text/javascript';\n",
       "    g.defer=false; \n",
       "    g.async=false;\n",
       "    var code = \"var pixiedust = (function(){\\n\"+\n",
       "\"    return {\\n\"+\n",
       "\"        input_reply_queue: {\\n\"+\n",
       "\"            inflight: null,\\n\"+\n",
       "\"            queue: [],\\n\"+\n",
       "\"            callbacks: {},\\n\"+\n",
       "\"            counter: 0,\\n\"+\n",
       "\"            registerCallback: function(cb){\\n\"+\n",
       "\"                var handle = 'id_' + this.counter++;\\n\"+\n",
       "\"                this.callbacks[handle] = cb;\\n\"+\n",
       "\"                return \\\"$$\\\" + handle + \\\"$$\\\";\\n\"+\n",
       "\"            },\\n\"+\n",
       "\"            parseCallback: function(content){\\n\"+\n",
       "\"                var match = content.text.match(/\\\\$\\\\$(.*)\\\\$\\\\$((.|\\\\n)*)/i);\\n\"+\n",
       "\"                if (match){\\n\"+\n",
       "\"                    content.text = match[2].trim();\\n\"+\n",
       "\"                    if (!this.callbacks[match[1]]){\\n\"+\n",
       "\"                        console.log(\\\"Cannot find callbacks for \\\" + match[1]);\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        var retValue = this.callbacks[match[1]];\\n\"+\n",
       "\"                        delete this.callbacks[match[1]];\\n\"+\n",
       "\"                        return retValue;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                return null;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        getCell: function(cell_id){\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var cells=IPython.notebook.get_cells().filter(function(cell){\\n\"+\n",
       "\"                return cell.cell_id==cell_id;\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            return cells.length>0?cells[0]:null;\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        executeDisplay:function(pd_ctls, user_ctls){\\n\"+\n",
       "\"            var pd_controls = pd_ctls || {};\\n\"+\n",
       "\"            var user_controls = user_ctls || {\\\"options\\\":{}};\\n\"+\n",
       "\"            if (user_controls.inFlight){\\n\"+\n",
       "\"                console.log(\\\"Ignoring request to execute Display that is already being executed\\\");\\n\"+\n",
       "\"                return;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            user_controls.inFlight = true;\\n\"+\n",
       "\"            var options = $.extend({}, pd_controls.options || {}, user_controls.options || {} );\\n\"+\n",
       "\"            function wrapDisplayDone(fn){\\n\"+\n",
       "\"                return function(targetNode, targetNodeUpdated){\\n\"+\n",
       "\"                    user_controls.inFlight = false;\\n\"+\n",
       "\"                    if(targetNodeUpdated){\\n\"+\n",
       "\"                        if (fn){\\n\"+\n",
       "\"                            fn.apply(this);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        $(document).trigger('pd_event', {type:\\\"pd_load\\\", targetNode: targetNode});\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            user_controls.onDisplayDone = wrapDisplayDone( user_controls.onDisplayDone);\\n\"+\n",
       "\"            var pd_prefix = pd_controls.prefix;\\n\"+\n",
       "\"            var $targetDivId = user_controls.targetDivId;\\n\"+\n",
       "\"            !function() {\\n\"+\n",
       "\"    function getTargetNodeId(override=null){\\n\"+\n",
       "\"        return override || $targetDivId || (\\\"wrapperHTML\\\"+ pd_prefix);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function getTargetNode(override=null){\\n\"+\n",
       "\"        return $('#' + getTargetNodeId(override));\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function checkRootInit(){\\n\"+\n",
       "\"        node = getTargetNode();\\n\"+\n",
       "\"        var retValue = node.is(\\\"[pd_init]\\\");\\n\"+\n",
       "\"        if (retValue){\\n\"+\n",
       "\"            node.removeAttr(\\\"pd_init\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return retValue;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function setText(targetNode, contents, pdCtl = null, userCtl = null){\\n\"+\n",
       "\"        var pd_elements = []\\n\"+\n",
       "\"        targetNode.children().each(function(){\\n\"+\n",
       "\"            if (this.tagName.toLowerCase().startsWith(\\\"pd_\\\")){\\n\"+\n",
       "\"                pd_elements.push($(this).clone());\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        if (!targetNode.hasClass(\\\"use_stream_output\\\")){\\n\"+\n",
       "\"            targetNode.text(contents);\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            var consoleNode = targetNode.children(\\\"div.consoleOutput\\\");\\n\"+\n",
       "\"            if (consoleNode.length == 0){\\n\"+\n",
       "\"                consoleNode = targetNode.append('<div class=\\\"consoleOutput\\\"></div>').children(\\\"div.consoleOutput\\\");\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            var existing = consoleNode.text();\\n\"+\n",
       "\"            if (existing != \\\"\\\"){\\n\"+\n",
       "\"                contents = existing + \\\"\\\\n\\\" + contents;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            consoleNode.html('<pre style=\\\"max-height: 300px;border: 1px lightgray solid;margin-top: 20px;\\\">' + contents + \\\"</pre>\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (pd_elements.length > 0 ){\\n\"+\n",
       "\"            targetNode.append(pd_elements);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function setHTML(targetNode, contents, pdCtl = null, userCtl = null){\\n\"+\n",
       "\"        var pd_elements = []\\n\"+\n",
       "\"        targetNode.children().each(function(){\\n\"+\n",
       "\"            var eltName = this.tagName.toLowerCase();\\n\"+\n",
       "\"            if (eltName.startsWith(\\\"pd_\\\") || (eltName == \\\"div\\\" && this.classList.contains(\\\"consoleOutput\\\")) ){\\n\"+\n",
       "\"                pd_elements.push($(this).clone());\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        targetNode.html(\\\"<div pd_stop_propagation style='height:100%;'>\\\" + contents + \\\"</div>\\\");\\n\"+\n",
       "\"        if (pd_elements.length > 0 ){\\n\"+\n",
       "\"            targetNode.append(pd_elements);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    function send_input_reply(cb, cmd, pd_controls){\\n\"+\n",
       "\"        if (cmd == 'c' || cmd == 'continue' || cmd.startsWith(\\\"$$\\\")){\\n\"+\n",
       "\"            cb = null;\\n\"+\n",
       "\"            pixiedust.input_reply_queue.queue = [];\\n\"+\n",
       "\"            pixiedust.input_reply_queue.callbacks = {};\\n\"+\n",
       "\"            $(\\\"#debugger_container_\\\" + pd_controls.prefix).hide();\\n\"+\n",
       "\"            if (cmd.startsWith(\\\"$$\\\")){\\n\"+\n",
       "\"                cmd = cmd.substring(2);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else if (cmd == 'no_op'){\\n\"+\n",
       "\"            cb = null;\\n\"+\n",
       "\"            cmd = null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (cb && $targetDivId == \\\"debugger_refresh\\\"){\\n\"+\n",
       "\"            cb.refreshDebugger = true;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        pixiedust.input_reply_queue.inflight = cb;\\n\"+\n",
       "\"        if (cmd){\\n\"+\n",
       "\"            var prolog = cb ? \\\"print('\\\" + pixiedust.input_reply_queue.registerCallback(cb) + \\\"');;\\\" : \\\"\\\";\\n\"+\n",
       "\"            IPython.notebook.session.kernel.send_input_reply( prolog + cmd );\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var cellId = options.cell_id || \\\"\\\";\\n\"+\n",
       "\"    var curCell = pixiedust.getCell(cellId);\\n\"+\n",
       "\"    console.log(\\\"curCell\\\",curCell);\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var callbacks = {\\n\"+\n",
       "\"        shell : {\\n\"+\n",
       "\"            reply : function(){\\n\"+\n",
       "\"                if ( !callbacks.response ){\\n\"+\n",
       "\"                    var targetNodeUpdated = false;\\n\"+\n",
       "\"                    if (!user_controls.partialUpdate){\\n\"+\n",
       "\"                        targetNodeUpdated = setHTML(getTargetNode(), \\\"\\\",pd_controls, user_controls);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                        user_controls.onDisplayDone(getTargetNode(), targetNodeUpdated);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            },\\n\"+\n",
       "\"            payload : {\\n\"+\n",
       "\"                set_next_input : function(payload){\\n\"+\n",
       "\"                    if (curCell){\\n\"+\n",
       "\"                        curCell._handle_set_next_input(payload);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        iopub:{\\n\"+\n",
       "\"            output:function(msg){\\n\"+\n",
       "\"                if (curCell && !$targetDivId && getTargetNode().length == 0){\\n\"+\n",
       "\"                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                    return;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                callbacks.response = true;\\n\"+\n",
       "\"                console.log(\\\"msg\\\", msg);\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                if (cellId == \\\"\\\"){\\n\"+\n",
       "\"                    if (curCell){\\n\"+\n",
       "\"                        curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                        curCell.output_area.outputs=[];\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        console.log(\\\"Could not find current cell\\\");\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    return;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                var msg_type=msg.header.msg_type;\\n\"+\n",
       "\"                var content = msg.content;\\n\"+\n",
       "\"                var targetNodeUpdated = false;\\n\"+\n",
       "\"                if(msg_type===\\\"stream\\\"){\\n\"+\n",
       "\"                    var reply_callbacks = pixiedust.input_reply_queue.parseCallback(content);\\n\"+\n",
       "\"                    if (reply_callbacks && reply_callbacks != callbacks){\\n\"+\n",
       "\"                        if (reply_callbacks.iopub){\\n\"+\n",
       "\"                            reply_callbacks.iopub.output(msg);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        return;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    var useHTML = false;\\n\"+\n",
       "\"                    var process_output = getScriptOfType($(\\\"#\\\" + $targetDivId), \\\"process_output\\\");\\n\"+\n",
       "\"                    if (process_output){\\n\"+\n",
       "\"                        try{\\n\"+\n",
       "\"                            content.text = new Function('output', process_output)(content.text);\\n\"+\n",
       "\"                            useHTML = true;\\n\"+\n",
       "\"                        }catch(e){\\n\"+\n",
       "\"                            console.log(\\\"Error while invoking post output function\\\", e, content.text, process_output);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (user_controls.onSuccess){\\n\"+\n",
       "\"                        user_controls.onSuccess(content.text);\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        fn = useHTML?setHTML:setText;\\n\"+\n",
       "\"                        targetNodeUpdated = fn(getTargetNode(), content.text, pd_controls, user_controls);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else if (msg_type===\\\"display_data\\\" || msg_type===\\\"execute_result\\\"){\\n\"+\n",
       "\"                    var html=null;\\n\"+\n",
       "\"                    if (!!content.data[\\\"text/html\\\"]){\\n\"+\n",
       "\"                        html=content.data[\\\"text/html\\\"];\\n\"+\n",
       "\"                    }else if (!!content.data[\\\"image/png\\\"]){\\n\"+\n",
       "\"                        html=html||\\\"\\\";\\n\"+\n",
       "\"                        html+=\\\"<img src='data:image/png;base64,\\\" +content.data[\\\"image/png\\\"]+\\\"'></img>\\\";\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                                                    \\n\"+\n",
       "\"                    if (!!content.data[\\\"application/javascript\\\"]){\\n\"+\n",
       "\"                        try {\\n\"+\n",
       "\"                            eval(content.data[\\\"application/javascript\\\"]);\\n\"+\n",
       "\"                        } catch(err) {\\n\"+\n",
       "\"                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                        }                        \\n\"+\n",
       "\"                        return;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    if (html){\\n\"+\n",
       "\"                        try{\\n\"+\n",
       "\"                            if (user_controls.onSuccess){\\n\"+\n",
       "\"                                user_controls.onSuccess(html);\\n\"+\n",
       "\"                            }else{\\n\"+\n",
       "\"                                targetNodeUpdated = setHTML(getTargetNode(), html, pd_controls, user_controls);\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                            if (content.metadata && content.metadata.pixieapp_metadata){\\n\"+\n",
       "\"                                \\n\"+\n",
       "\"                                if (curCell){\\n\"+\n",
       "\"                                    curCell._metadata.pixiedust.pixieapp = content.metadata.pixieapp_metadata;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                                \\n\"+\n",
       "\"                            }                            \\n\"+\n",
       "\"                        }catch(e){\\n\"+\n",
       "\"                            console.log(\\\"Invalid html output\\\", e, html);\\n\"+\n",
       "\"                            targetNodeUpdated = setHTML(getTargetNode(),  \\\"Invalid html output: \\\" + e.message + \\\"<pre>\\\" \\n\"+\n",
       "\"                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\\\"/g,'&quot;') + \\\"<pre>\\\",\\n\"+\n",
       "\"                                pd_controls, user_controls);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (callbacks.options && callbacks.options.nostore_delaysave){\\n\"+\n",
       "\"                            setTimeout(function(){\\n\"+\n",
       "\"                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\\n\"+\n",
       "\"                            }, 1000);\\n\"+\n",
       "\"                        }else{\\n\"+\n",
       "\"                            pixiedust.saveOutputInCell(curCell, content, html, msg_type);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else if (msg_type === \\\"error\\\") {\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    require(['base/js/utils'], function(utils) {\\n\"+\n",
       "\"                        var tb = content.traceback;\\n\"+\n",
       "\"                        console.log(\\\"tb\\\",tb);\\n\"+\n",
       "\"                        if (tb && tb.length>0){\\n\"+\n",
       "\"                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\\\\\n';},\\\"\\\");\\n\"+\n",
       "\"                            console.log(\\\"data\\\",data);\\n\"+\n",
       "\"                            data = utils.fixConsole(data);\\n\"+\n",
       "\"                            data = utils.fixCarriageReturn(data);\\n\"+\n",
       "\"                            data = utils.autoLinkUrls(data);\\n\"+\n",
       "\"                            if (user_controls.onError){\\n\"+\n",
       "\"                                user_controls.onError(data);\\n\"+\n",
       "\"                            }else{\\n\"+\n",
       "\"                                var debugger_html = '<button type=\\\"submit\\\" pd_options=\\\"new_parent_prefix=false\\\" pd_target=\\\"' + \\n\"+\n",
       "\"                                getTargetNodeId() + '\\\" pd_app=\\\"pixiedust.apps.debugger.PixieDebugger\\\">Post Mortem</button>' +\\n\"+\n",
       "\"                                '<span>&nbsp;&nbsp;</span>' +\\n\"+\n",
       "\"                                '<button type=\\\"submit\\\" pd_options=\\\"new_parent_prefix=false;debug_route=true\\\" pd_target=\\\"' + \\n\"+\n",
       "\"                                getTargetNodeId() + '\\\" pd_app=\\\"pixiedust.apps.debugger.PixieDebugger\\\">Debug Route</button>'\\n\"+\n",
       "\"\\n\"+\n",
       "\"                                targetNodeUpdated = setHTML(\\n\"+\n",
       "\"                                    getTargetNode(), \\n\"+\n",
       "\"                                    debugger_html + \\\"<pre>\\\" + data + '</pre>' + debugger_html, \\n\"+\n",
       "\"                                    pd_controls, \\n\"+\n",
       "\"                                    user_controls\\n\"+\n",
       "\"                                );\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    });\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    callbacks.response = false;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                    user_controls.onDisplayDone(getTargetNode(), targetNodeUpdated);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        input : function(msg){\\n\"+\n",
       "\"            var reply_callbacks = pixiedust.input_reply_queue.inflight;\\n\"+\n",
       "\"            if (!reply_callbacks || reply_callbacks.refreshDebugger){\\n\"+\n",
       "\"                $(\\\"#debugger_container_\\\" + pd_controls.prefix).show();\\n\"+\n",
       "\"                var input_target = \\\"input_reply_\\\" + pd_controls.prefix;\\n\"+\n",
       "\"                var process_output = getScriptOfType($(\\\"#\\\" + input_target), \\\"process_output\\\");\\n\"+\n",
       "\"                if (process_output){\\n\"+\n",
       "\"                    try{\\n\"+\n",
       "\"                        if (reply_callbacks){\\n\"+\n",
       "\"                            reply_callbacks.refreshDebugger = false;\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (!pixiedust.input_reply_queue.inflight){\\n\"+\n",
       "\"                            pixiedust.input_reply_queue.inflight = {};\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        msg.content.prompt = new Function('output', process_output)(msg.content.prompt);\\n\"+\n",
       "\"                        targetNodeUpdated = setHTML(getTargetNode(input_target), msg.content.prompt, pd_controls, user_controls);\\n\"+\n",
       "\"                        if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                            user_controls.onDisplayDone(getTargetNode(input_target), targetNodeUpdated);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }catch(e){\\n\"+\n",
       "\"                        console.log(\\\"Error while invoking post output function\\\", e, msg.content.prompt, process_output);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    console.log(\\\"No element with id input_reply_\\\"+pd_controls.prefix + \\\" found\\\");\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            if (reply_callbacks && reply_callbacks.answer_input_reply){\\n\"+\n",
       "\"                var answer = reply_callbacks.answer_input_reply;\\n\"+\n",
       "\"                reply_callbacks.answer_input_reply = null;\\n\"+\n",
       "\"                send_input_reply(reply_callbacks, answer, pd_controls);\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                var next_input_reply = pixiedust.input_reply_queue.queue.shift();\\n\"+\n",
       "\"                if (next_input_reply && next_input_reply.command == \\\"no_op_delay\\\"){\\n\"+\n",
       "\"                    next_input_reply = pixiedust.input_reply_queue.queue.shift();\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                if (next_input_reply){\\n\"+\n",
       "\"                    send_input_reply(next_input_reply.callbacks, next_input_reply.command, pd_controls);\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    pixiedust.input_reply_queue.inflight = null;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            console.log(\\\"Handling input msg request: \\\", msg);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\\n\"+\n",
       "\"    \\n\"+\n",
       "\"        var command = user_controls.script || pd_controls.command.replace(\\\"cellId\\\",cellId);\\n\"+\n",
       "\"        if ( !user_controls.script){\\n\"+\n",
       "\"            function addOptions(options, override=true, ignoreKeys=[]){\\n\"+\n",
       "\"                function getStringRep(v) {\\n\"+\n",
       "\"                    return \\\"'\\\" + v + \\\"'\\\";\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                for (var key in (options||{})){\\n\"+\n",
       "\"                    if (ignoreKeys.indexOf(key)>=0){\\n\"+\n",
       "\"                        continue;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    var value = options[key];\\n\"+\n",
       "\"                    var hasValue = value != null && typeof value !== 'undefined' && value !== '';\\n\"+\n",
       "\"                    var replaceValue = hasValue ? (key+\\\"=\\\" + getStringRep(value) ) : \\\"\\\";\\n\"+\n",
       "\"                    var pattern = (hasValue?\\\"\\\":\\\",\\\")+\\\"\\\\\\\\s*\\\" + key + \\\"\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"                    var rpattern=new RegExp(pattern);\\n\"+\n",
       "\"                    var n = command.search(rpattern);\\n\"+\n",
       "\"                    if ( n >= 0 ){\\n\"+\n",
       "\"                        if (override){\\n\"+\n",
       "\"                            command = command.replace(rpattern, replaceValue);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }else if (hasValue){\\n\"+\n",
       "\"                        var n = command.lastIndexOf(\\\")\\\");\\n\"+\n",
       "\"                        command = [command.slice(0, n), (command[n-1]==\\\"(\\\"? \\\"\\\":\\\",\\\") + replaceValue, command.slice(n)].join('')\\n\"+\n",
       "\"                    }        \\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            if(typeof cellMetadata != \\\"undefined\\\" && cellMetadata.displayParams){\\n\"+\n",
       "\"                addOptions(cellMetadata.displayParams);\\n\"+\n",
       "\"                addOptions({\\\"showchrome\\\":\\\"true\\\"});\\n\"+\n",
       "\"            }else if (curCell && curCell._metadata.pixiedust ){\\n\"+\n",
       "\"                if (!pd_controls.avoidMetadata){\\n\"+\n",
       "\"                    ignoreKeys = pd_controls.options.nostore_pixieapp?[\\\"handlerId\\\"]:[];\\n\"+\n",
       "\"                    if (pd_controls.override_keys){\\n\"+\n",
       "\"                        Array.prototype.push.apply(ignoreKeys,pd_controls.override_keys);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pd_controls.include_keys || []\\n\"+\n",
       "\"                    addOptions(curCell._metadata.pixiedust.displayParams || {}, pd_controls.useCellMetadata, ignoreKeys);\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    var includeKeys = pd_controls.include_keys || [];\\n\"+\n",
       "\"                    var includeOptions = {};\\n\"+\n",
       "\"                    for (var key in (curCell._metadata.pixiedust.displayParams||{})){\\n\"+\n",
       "\"                        if (includeKeys.indexOf(key) > -1 || !(key in pd_controls.options)){\\n\"+\n",
       "\"                            includeOptions[key] = curCell._metadata.pixiedust.displayParams[key];\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    addOptions(includeOptions);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            addOptions(user_controls.options||{});\\n\"+\n",
       "\"            var pattern = \\\"\\\\\\\\w*\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"            var rpattern=new RegExp(pattern,\\\"g\\\");\\n\"+\n",
       "\"            var n = command.match(rpattern);\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var org_params = {}\\n\"+\n",
       "\"            for (var i=0; i<n.length;i++){\\n\"+\n",
       "\"                var parts = n[i].split(\\\"=\\\")\\n\"+\n",
       "\"                if (parts[0].trim() == \\\"org_params\\\"){\\n\"+\n",
       "\"                    var value = parts[1].trim()\\n\"+\n",
       "\"                    var values = value.substring(1,value.length-1).split(\\\",\\\");\\n\"+\n",
       "\"                    for (var p in values){\\n\"+\n",
       "\"                        org_params[values[p].trim()] = true;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    break;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            var displayParams={}\\n\"+\n",
       "\"            for (var i = 0; i < n.length; i++){\\n\"+\n",
       "\"                var parts=n[i].split(\\\"=\\\");\\n\"+\n",
       "\"                var key = parts[0].trim();\\n\"+\n",
       "\"                var value = parts[1].trim()\\n\"+\n",
       "\"                if (!key.startsWith(\\\"nostore_\\\") && key != \\\"showchrome\\\" && key != \\\"prefix\\\" && key != \\\"cell_id\\\" && key != \\\"org_params\\\" && !!!org_params[key]){\\n\"+\n",
       "\"                    displayParams[key] = value.substring(1,value.length-1);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"\\n\"+\n",
       "\"            \\n\"+\n",
       "\"\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var rpattern=/,(.*?)='(.*?)'/g;\\n\"+\n",
       "\"            var newOptions = {};\\n\"+\n",
       "\"            for (var match = rpattern.exec(command); match != null; match = rpattern.exec(command)){\\n\"+\n",
       "\"                newOptions[match[1]] = match[2];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            pd_controls.options = newOptions;\\n\"+\n",
       "\"            pd_controls.command = command;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if(curCell&&curCell.output_area){ \\n\"+\n",
       "\"            if ( !user_controls.nostoreMedatadata ){\\n\"+\n",
       "\"                curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\\n\"+\n",
       "\"                curCell._metadata.pixiedust.displayParams=displayParams\\n\"+\n",
       "\"                curCell.output_area.outputs=[];\\n\"+\n",
       "\"                var old_msg_id = curCell.last_msg_id;\\n\"+\n",
       "\"                if (old_msg_id) {\\n\"+\n",
       "\"                    curCell.kernel.clear_callbacks_for_msg(old_msg_id);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            console.log(\\\"couldn't find the cell\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        $('#wrapperJS' + pd_prefix).html(\\\"\\\")\\n\"+\n",
       "\"        if (!getTargetNode().hasClass( \\\"no_loading_msg\\\" )){\\n\"+\n",
       "\"            setHTML(getTargetNode(), \\n\"+\n",
       "\"                '<div style=\\\"width:100px;height:60px;left:47%;position:relative\\\">'+\\n\"+\n",
       "\"                    '<i class=\\\"fa fa-circle-o-notch fa-spin\\\" style=\\\"font-size:48px\\\"></i>'+\\n\"+\n",
       "\"                '</div>'+\\n\"+\n",
       "\"                '<div style=\\\"text-align:center\\\">' +\\n\"+\n",
       "\"                    (getTargetNode().attr(\\\"pd_loading_msg\\\") || \\\"Loading your data. Please wait...\\\") +\\n\"+\n",
       "\"                '</div>',\\n\"+\n",
       "\"                pd_controls, user_controls\\n\"+\n",
       "\"            );\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        if (curCell && checkRootInit() && curCell._metadata.pixiedust && curCell._metadata.pixiedust.pixieapp){\\n\"+\n",
       "\"            pd_controls.entity = pd_controls.entity || []\\n\"+\n",
       "\"            if (pd_controls.entity.length == 1 && (pd_controls.options.nostore_pixieapp == pd_controls.entity[0])){\\n\"+\n",
       "\"                console.log(\\\"Initializing pixieapp metadata\\\");\\n\"+\n",
       "\"                command = pd_controls.options.nostore_pixieapp + \\\".append_metadata(\\\" + \\n\"+\n",
       "\"                JSON.stringify(curCell._metadata.pixiedust.pixieapp) + \\\")\\\\n\\\" + command\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (user_controls.send_input_reply){\\n\"+\n",
       "\"            command = user_controls.send_input_reply;\\n\"+\n",
       "\"            callbacks.answer_input_reply = user_controls.answer_input_reply;\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            pixiedust.input_reply_queue.queue = pixiedust.input_reply_queue.queue.filter(\\n\"+\n",
       "\"                function(item){\\n\"+\n",
       "\"                    return item.command!='no_op';\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            );\\n\"+\n",
       "\"            if (pixiedust.input_reply_queue.inflight || pixiedust.input_reply_queue.queue.length > 0 || command == \\\"no_op_delay\\\"){\\n\"+\n",
       "\"                pixiedust.input_reply_queue.queue.push({\\\"command\\\":command, \\\"callbacks\\\":callbacks});\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                send_input_reply(callbacks, command, pd_controls);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            if (pixiedust.input_reply_queue.inflight){\\n\"+\n",
       "\"                console.log(\\\"Warning: A kernel request is triggered but not all the reply callback where consummed\\\", command);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            command = command.trim();\\n\"+\n",
       "\"            IPython.notebook.session.kernel.execute(command, callbacks, {\\n\"+\n",
       "\"                silent:true,store_history:false,stop_on_error:true,allow_stdin : true\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        \\n\"+\n",
       "\"\\n\"+\n",
       "\"        console.log(\\\"Running command2:\\\\n\\\",command);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"}()\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        executeInDialog:function(pd_controls, user_controls){\\n\"+\n",
       "\"            pd_controls = pd_controls || {};\\n\"+\n",
       "\"            user_controls = user_controls || {\\\"options\\\":{}};\\n\"+\n",
       "\"            var displayOptions = $.extend({}, pd_controls.options || {}, user_controls.options || {} );\\n\"+\n",
       "\"            var global={};\\n\"+\n",
       "\"            var sourceDivId = displayOptions.targetDivId;\\n\"+\n",
       "\"            require(['base/js/dialog'],function(dialog){\\n\"+\n",
       "\"                var modal = dialog.modal;\\n\"+\n",
       "\"                var attr_pd_ctrl = JSON.stringify(pd_controls).trim()\\n\"+\n",
       "\"                    .replace(/&/g, '&amp;')\\n\"+\n",
       "\"                    .replace(/'/g, '&apos;')\\n\"+\n",
       "\"                    .replace(/\\\"/g, '&quot;')\\n\"+\n",
       "\"                    .replace(/</g, '&lt;')\\n\"+\n",
       "\"                    .replace(/>/g, '&gt;');\\n\"+\n",
       "\"                var dialogRoot = \\\"dialog\\\" + pd_controls.prefix + \\\"root\\\";\\n\"+\n",
       "\"                var options = {\\n\"+\n",
       "\"                    title: \\\"PixieDust: \\\" + (displayOptions.title || \\\"Dialog\\\"),\\n\"+\n",
       "\"                    body: '<div id=\\\"' + dialogRoot + '\\\" pixiedust=\\\"' + attr_pd_ctrl + '\\\" class=\\\"pixiedust\\\"></div>',\\n\"+\n",
       "\"                    sanitize:false,\\n\"+\n",
       "\"                    notebook: IPython.notebook,\\n\"+\n",
       "\"                    keyboard_manager: IPython.notebook.keyboard_manager,\\n\"+\n",
       "\"                    maximize_modal: (displayOptions.maximize === \\\"true\\\"),\\n\"+\n",
       "\"                    custom_class: (displayOptions.customClass || ''),\\n\"+\n",
       "\"                    hide_header: (displayOptions.hideHeader === 'true'),\\n\"+\n",
       "\"                    hide_footer: (displayOptions.showFooter === undefined || displayOptions.showFooter !== 'true'),\\n\"+\n",
       "\"                    buttons: {\\n\"+\n",
       "\"                        OK: {\\n\"+\n",
       "\"                            class : \\\"btn-primary btn-ok\\\",\\n\"+\n",
       "\"                            click: function() {\\n\"+\n",
       "\"                                var dlg = $(\\\"#\\\" + dialogRoot + \\\" > pd_dialog\\\");\\n\"+\n",
       "\"                                try{\\n\"+\n",
       "\"                                    pixiedust.dialogRoot = null;\\n\"+\n",
       "\"                                    $(document).trigger('pd_event', {targetDivId: sourceDivId || dialogRoot, entity: pd_controls.options.nostore_pixieapp});\\n\"+\n",
       "\"                                    return new Function('global', 'modal_obj', dlg.find(\\\"> pd_ok\\\").text().trim())(global, modal_obj);\\n\"+\n",
       "\"                                }catch(e){\\n\"+\n",
       "\"                                    console.error(e);\\n\"+\n",
       "\"                                    return false;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        },\\n\"+\n",
       "\"                        Cancel: {\\n\"+\n",
       "\"                            class : \\\"btn-cancel\\\",\\n\"+\n",
       "\"                            click: function(){\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                function resizeDialog() {\\n\"+\n",
       "\"                    global.modalBodyStyle = $('.pixiedust .modal-body').attr('style');\\n\"+\n",
       "\"                    global.modalFooterStyle = $('.pixiedust .modal-footer').attr('style');\\n\"+\n",
       "\"                    $('.pixiedust .modal-body').attr('style', global.modalBodyStyle ? global.modalBodyStyle + ';padding:5px 20px !important;' : 'padding:5px 20px !important;');\\n\"+\n",
       "\"                    if (options.hide_footer){\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').attr('style', 'display:none !important;');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    $(\\\".pixiedust .modal-footer\\\").find(\\\"> button:contains('OK')\\\").attr(\\\"pd_options\\\", \\\"toto=true\\\");\\n\"+\n",
       "\"                    if (options.hide_header) {\\n\"+\n",
       "\"                        global.modalHeaderStyle = $('.pixiedust .modal-header').attr('style');\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').attr('style', 'display:none !important;');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                function resetDialog() {\\n\"+\n",
       "\"                    if (global.modalBodyStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-body').attr('style', global.modalBodyStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-body').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (global.modalFooterStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').attr('style', global.modalFooterStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (global.modalHeaderStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').attr('style', global.modalHeaderStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                var modal_obj = modal(options);\\n\"+\n",
       "\"                modal_obj.addClass('pixiedust pixiedust-app ' + options.custom_class);\\n\"+\n",
       "\"                if (options.maximize_modal) {\\n\"+\n",
       "\"                    modal_obj.addClass('pixiedust pixiedust-app pixiedust-maximize ' + options.custom_class);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                modal_obj.on('shown.bs.modal', function(){\\n\"+\n",
       "\"                    resizeDialog();\\n\"+\n",
       "\"                    var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\\n\"+\n",
       "\"                    if( isFF && options.keyboard_manager){\\n\"+\n",
       "\"                        \\n\"+\n",
       "\"                        var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\\n\"+\n",
       "\"                        global.KMEnableProto = KeyboardManager.prototype.enable;\\n\"+\n",
       "\"                        KeyboardManager.prototype.enable = function () {\\n\"+\n",
       "\"                            this.enabled = false;\\n\"+\n",
       "\"                        };\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    IPython.keyboard_manager.register_events(modal_obj);\\n\"+\n",
       "\"                    user_controls.options.targetDivId = user_controls.targetDivId = dialogRoot;\\n\"+\n",
       "\"                    if ( user_controls.options.dialog == 'true'){\\n\"+\n",
       "\"                        user_controls.onDisplayDone = function(){\\n\"+\n",
       "\"                            var dlg = $(\\\"#\\\" + dialogRoot + \\\" > pd_dialog\\\")\\n\"+\n",
       "\"                            try{\\n\"+\n",
       "\"                                new Function('global', 'modal_obj', dlg.find(\\\"> pd_onload\\\").text().trim())(global, modal_obj);\\n\"+\n",
       "\"                            }catch(e){\\n\"+\n",
       "\"                                console.error(e);\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pixiedust.dialogRoot = dialogRoot;\\n\"+\n",
       "\"                    pixiedust.executeDisplay(pd_controls, user_controls);\\n\"+\n",
       "\"                });\\n\"+\n",
       "\"                modal_obj.on(\\\"hidden.bs.modal\\\", function () {\\n\"+\n",
       "\"                    resetDialog();\\n\"+\n",
       "\"                    if ( global.KMEnableProto ){\\n\"+\n",
       "\"                        var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\\n\"+\n",
       "\"                        KeyboardManager.prototype.enable = global.KMEnableProto;\\n\"+\n",
       "\"                        delete global.KMEnableProto;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pixiedust.dialogRoot = null;\\n\"+\n",
       "\"                });\\n\"+\n",
       "\"            })\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        sendEvent: function(payload, divId){\\n\"+\n",
       "\"            payload = payload || {};\\n\"+\n",
       "\"            var targetElement = event.target || event.srcElement;\\n\"+\n",
       "\"            divId = divId || $(targetElement).uniqueId().attr('id');\\n\"+\n",
       "\"            payload.targetDivId = divId;\\n\"+\n",
       "\"            $(document).trigger('pd_event', payload);\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        saveOutputInCell: function(curCell, content, html, msg_type){\\n\"+\n",
       "\"            if(curCell && curCell.output_area && curCell.output_area.outputs){\\n\"+\n",
       "\"                var data = JSON.parse(JSON.stringify(content.data));\\n\"+\n",
       "\"                if(!!data[\\\"text/html\\\"])data[\\\"text/html\\\"]=html;\\n\"+\n",
       "\"                function savedData(data){\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    var markup='<style type=\\\"text/css\\\">.pd_warning{display:none;}</style>';\\n\"+\n",
       "\"                    markup+='<div class=\\\"pd_warning\\\"><em>Hey, there\\\\'s something awesome here! To see it, open this notebook outside GitHub, in a viewer like Jupyter</em></div>';\\n\"+\n",
       "\"                    nodes = $.parseHTML(data[\\\"text/html\\\"], null, true);\\n\"+\n",
       "\"                    var s = $(nodes).wrap(\\\"<div>\\\").parent().find(\\\".pd_save\\\").not(\\\".pd_save .pd_save\\\");\\n\"+\n",
       "\"                    s.each(function(){\\n\"+\n",
       "\"                        var found = false;\\n\"+\n",
       "\"                        if ( $(this).attr(\\\"id\\\") ){\\n\"+\n",
       "\"                            var n = $(\\\"#\\\" + $(this).attr(\\\"id\\\"));\\n\"+\n",
       "\"                            if (n.length>0){\\n\"+\n",
       "\"                                found=true;\\n\"+\n",
       "\"                                n.each(function(){\\n\"+\n",
       "\"                                    $(this).addClass(\\\"is-viewer-good\\\");\\n\"+\n",
       "\"                                });\\n\"+\n",
       "\"                                markup+=n.wrap(\\\"<div>\\\").parent().html();\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }else{\\n\"+\n",
       "\"                            $(this).addClass(\\\"is-viewer-good\\\");\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (!found){\\n\"+\n",
       "\"                            markup+=$(this).parent().html();\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    });\\n\"+\n",
       "\"                    data[\\\"text/html\\\"] = markup;\\n\"+\n",
       "\"                    return data;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                curCell.output_area.outputs = [{\\n\"+\n",
       "\"                    \\\"data\\\": savedData(data),\\\"metadata\\\":content.metadata,\\\"output_type\\\":msg_type\\n\"+\n",
       "\"                }];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"})();\\n\"+\n",
       "\"\\n\"+\n",
       "\"function resolveScriptMacros(script){\\n\"+\n",
       "\"    script = script && script.replace(/\\\\$val\\\\(\\\\\\\"?(\\\\w*)\\\\\\\"?\\\\)/g, function(a,b){\\n\"+\n",
       "\"        var n = $(\\\"#\\\" + b );\\n\"+\n",
       "\"        var v = null;\\n\"+\n",
       "\"        if (n.length > 0){\\n\"+\n",
       "\"            if (n.is(':checkbox')){\\n\"+\n",
       "\"                v = n.is(':checked').toString();\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                v = $(\\\"#\\\" + b ).val() || $(\\\"#\\\" + b ).text();\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\" && window[b] && typeof window[b] === \\\"function\\\"){\\n\"+\n",
       "\"            v = window[b]();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\" && pixiedust[b] && typeof pixiedust[b] === \\\"function\\\"){\\n\"+\n",
       "\"            v = pixiedust[b]();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\"){\\n\"+\n",
       "\"            console.log(\\\"Warning: Unable to resolve value for element \\\", b);\\n\"+\n",
       "\"            return a;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (typeof v === \\\"object\\\"){\\n\"+\n",
       "\"            return JSON.stringify(v)\\n\"+\n",
       "\"                .split('\\\\\\\\').join('\\\\\\\\\\\\\\\\')\\n\"+\n",
       "\"                .split(\\\"'''\\\").join(\\\"\\\\\\\\'\\\\\\\\'\\\\\\\\'\\\")\\n\"+\n",
       "\"                .split('\\\"\\\"\\\"').join('\\\\\\\\\\\"\\\\\\\\\\\"\\\\\\\\\\\"')\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return v.split('\\\"').join('&quot;').split('\\\\n').join('\\\\\\\\n');\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    return script;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getParentScript(element){\\n\"+\n",
       "\"    var scripts = [];\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $(element).parents(\\\"[pd_script]\\\").each(function(){\\n\"+\n",
       "\"        scripts.unshift(this.getAttribute(\\\"pd_script\\\"));\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var script = \\\"\\\";\\n\"+\n",
       "\"    $.each( scripts, function(index, value){\\n\"+\n",
       "\"        if (value){\\n\"+\n",
       "\"            script += \\\"\\\\n\\\" + value;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    return script;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function preRun(element){\\n\"+\n",
       "\"    var preRunCode = getScriptOfType(element, \\\"preRun\\\");\\n\"+\n",
       "\"    if (!preRunCode ){\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return new Function(preRunCode.trim())();\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getScriptOfType(element, scriptType){\\n\"+\n",
       "\"    if (!element.jquery){\\n\"+\n",
       "\"        element = $(element);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var code = null;\\n\"+\n",
       "\"    element.find(\\\"> pd_script\\\").each(function(){\\n\"+\n",
       "\"        var type = this.getAttribute(\\\"type\\\");\\n\"+\n",
       "\"        if (type == scriptType){\\n\"+\n",
       "\"            code = $(this).text();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    if (code){\\n\"+\n",
       "\"        return code.trim();\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return code;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function addOptions(command, options, override=true){\\n\"+\n",
       "\"    function getStringRep(v) {\\n\"+\n",
       "\"        if (typeof v === 'string' || v instanceof String){\\n\"+\n",
       "\"            v = v.replace(/'/g,\\\"\\\\\\\\\\\\'\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return \\\"'\\\" + v + \\\"'\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    for (var key in (options||{})){\\n\"+\n",
       "\"        var value = options[key];\\n\"+\n",
       "\"        var hasValue = value != null && typeof value !== 'undefined' && value !== '';\\n\"+\n",
       "\"        var replaceValue = hasValue ? (key+\\\"=\\\" + getStringRep(value) ) : \\\"\\\";\\n\"+\n",
       "\"        var pattern = (hasValue?\\\"\\\":\\\",\\\")+\\\"\\\\\\\\s*\\\" + key + \\\"\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"        var rpattern=new RegExp(pattern);\\n\"+\n",
       "\"        var n = command.search(rpattern);\\n\"+\n",
       "\"        if ( n >= 0 ){\\n\"+\n",
       "\"            if (override){\\n\"+\n",
       "\"                command = command.replace(rpattern, replaceValue);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else if (hasValue && command.search(/display\\\\s*\\\\(/) >= 0 ){\\n\"+\n",
       "\"            var n = command.lastIndexOf(\\\")\\\");\\n\"+\n",
       "\"            command = [command.slice(0, n), (command[n-1]==\\\"(\\\"? \\\"\\\":\\\",\\\") + replaceValue, command.slice(n)].join('')\\n\"+\n",
       "\"        }        \\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return command;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function computeGeometry(element, execInfo){\\n\"+\n",
       "\"        var parentStyles = [];\\n\"+\n",
       "\"    var hiddenBlockStyle = 'visibility: hidden !important; display: block !important;';\\n\"+\n",
       "\"    var tDiv = $(\\\"#\\\" + execInfo.targetDivId);\\n\"+\n",
       "\"    var tDivParents = tDiv.parents().addBack().filter(':hidden');\\n\"+\n",
       "\"    tDivParents.each(function() {\\n\"+\n",
       "\"        var currentStyle = $(this).attr('style');\\n\"+\n",
       "\"        parentStyles.push(currentStyle);\\n\"+\n",
       "\"        $(this).attr('style', currentStyle ? currentStyle + ';' + hiddenBlockStyle : hiddenBlockStyle);\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"\\n\"+\n",
       "\"        w = tDiv.width()\\n\"+\n",
       "\"    if (w) {\\n\"+\n",
       "\"        execInfo.options.nostore_cw= w;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if ($(element).parents(\\\".modal-dialog\\\").length > 0 ) {\\n\"+\n",
       "\"        h = tDiv.height()\\n\"+\n",
       "\"        if (h) {\\n\"+\n",
       "\"            execInfo.options.nostore_ch = h-10;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"        tDivParents.each(function(i) {\\n\"+\n",
       "\"        if (parentStyles[i] === undefined) {\\n\"+\n",
       "\"            $(this).removeAttr('style');\\n\"+\n",
       "\"        } else {\\n\"+\n",
       "\"            $(this).attr('style', parentStyles[i]);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readScriptAttribute(element){\\n\"+\n",
       "\"    var retValue = element.getAttribute(\\\"pd_script\\\");\\n\"+\n",
       "\"    var run_raw = false;\\n\"+\n",
       "\"    if (!retValue){\\n\"+\n",
       "\"        $(element).find(\\\"> pd_script\\\").each(function(){\\n\"+\n",
       "\"            var type = this.getAttribute(\\\"type\\\");\\n\"+\n",
       "\"            if (!type || type==\\\"python\\\"){\\n\"+\n",
       "\"                retValue = $(this).text();\\n\"+\n",
       "\"                run_raw = this.hasAttribute(\\\"run_raw\\\");\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        })\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return retValue?{\\\"script\\\":retValue, \\\"run_raw\\\":run_raw}:null;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getAttribute(element, name, defValue, defValueIfKeyAlone){\\n\"+\n",
       "\"    if (!element.hasAttribute(name)){\\n\"+\n",
       "\"        return defValue;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    retValue = element.getAttribute(name);\\n\"+\n",
       "\"    return retValue || defValueIfKeyAlone;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function convertToBoolean(value, def){\\n\"+\n",
       "\"    if (value === undefined){\\n\"+\n",
       "\"        return def;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (typeof(value) == \\\"string\\\"){\\n\"+\n",
       "\"        return value.toLowerCase() == \\\"true\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return value;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readExecInfo(pd_controls, element, searchParents, fromExecInfo){\\n\"+\n",
       "\"    if (searchParents === null || searchParents === undefined ){\\n\"+\n",
       "\"        searchParents = !element.hasAttribute(\\\"pd_stop_propagation\\\");\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var execInfo = {\\\"options\\\":{}};\\n\"+\n",
       "\"    $.extend(execInfo, fromExecInfo || {});\\n\"+\n",
       "\"    var hasOptions = false;\\n\"+\n",
       "\"    $.each( element.attributes, function(){\\n\"+\n",
       "\"        if (this.name.startsWith(\\\"option_\\\")){\\n\"+\n",
       "\"            hasOptions = true;\\n\"+\n",
       "\"            execInfo.options[this.name.replace(\\\"option_\\\", \\\"\\\")] = this.value || null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    var pd_options = resolveScriptMacros(element.getAttribute(\\\"pd_options\\\"));\\n\"+\n",
       "\"    if (pd_options){\\n\"+\n",
       "\"        var parts = pd_options.split(\\\";\\\");\\n\"+\n",
       "\"        $.each( parts, function(){\\n\"+\n",
       "\"            var index = this.indexOf(\\\"=\\\");\\n\"+\n",
       "\"            if ( index > 0){\\n\"+\n",
       "\"                hasOptions = true;\\n\"+\n",
       "\"                execInfo.options[this.substring(0, index)] = this.substring(index+1);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $(element).find(\\\"> pd_options\\\").each(function(){\\n\"+\n",
       "\"        try{\\n\"+\n",
       "\"            var options = JSON.parse($(this).text());\\n\"+\n",
       "\"            hasOptions = true;\\n\"+\n",
       "\"            for (var key in options) { \\n\"+\n",
       "\"                execInfo.options[key] = resolveScriptMacros(options[key]); \\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }catch(e){\\n\"+\n",
       "\"            console.log(\\\"Error parsing pd_options, invalid json\\\", e);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    })\\n\"+\n",
       "\"    if (convertToBoolean(execInfo.options.nostore_figureOnly, true)){\\n\"+\n",
       "\"        execInfo.options.nostore_figureOnly = true;\\n\"+\n",
       "\"    }else{\\n\"+\n",
       "\"        delete execInfo.options.nostore_figureOnly;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execInfo.options.targetDivId = execInfo.targetDivId = pd_controls.refreshTarget || element.getAttribute(\\\"pd_target\\\");\\n\"+\n",
       "\"    if (execInfo.options.targetDivId){\\n\"+\n",
       "\"        execInfo.options.no_margin=true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    execInfo.options.widget = element.getAttribute(\\\"pd_widget\\\");\\n\"+\n",
       "\"    execInfo.pixieapp = element.getAttribute(\\\"pd_app\\\");\\n\"+\n",
       "\"    if (execInfo.pixieapp && !execInfo.targetDivId){\\n\"+\n",
       "\"        execInfo.options.targetDivId = execInfo.targetDivId = $(element).uniqueId().attr('id');\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    computeGeometry(element, execInfo);\\n\"+\n",
       "\"\\n\"+\n",
       "\"    scriptAttr = readScriptAttribute(element);\\n\"+\n",
       "\"    if (scriptAttr){\\n\"+\n",
       "\"        execInfo.script = (execInfo.script || \\\"\\\") + \\\"\\\\n\\\" + scriptAttr.script;\\n\"+\n",
       "\"        execInfo.script_run_raw = scriptAttr.run_raw;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execInfo.refresh = execInfo.refresh || (getAttribute(element, \\\"pd_refresh\\\", \\\"false\\\", \\\"true\\\") == 'true');\\n\"+\n",
       "\"    execInfo.norefresh = element.hasAttribute(\\\"pd_norefresh\\\");\\n\"+\n",
       "\"    execInfo.entity = element.hasAttribute(\\\"pd_entity\\\") ? resolveScriptMacros(element.getAttribute(\\\"pd_entity\\\")) || \\\"pixieapp_entity\\\" : null;\\n\"+\n",
       "\"    function applyEntity(c, e, doptions){\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        doptions.prefix = pd_controls.prefix;\\n\"+\n",
       "\"\\n\"+\n",
       "\"        pd_controls.sniffers = pd_controls.sniffers || [];\\n\"+\n",
       "\"        pd_controls.sniffers.forEach(function(sniffer){\\n\"+\n",
       "\"            c = addOptions(c, eval('(' + sniffer + ')'))       \\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        if (!e){\\n\"+\n",
       "\"            return addOptions(c, doptions);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (pd_controls.entity){\\n\"+\n",
       "\"            c = c.replace(pd_controls.entity, pd_controls.entity+ \\\".\\\" + e );\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            c = c.replace(/\\\\((\\\\w*),/, \\\"($1.\\\" + e + \\\",\\\");\\n\"+\n",
       "\"        }        \\n\"+\n",
       "\"        return addOptions(c, doptions);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    var hasRefreshTarget = element.hasAttribute(\\\"pd_refresh\\\") && \\n\"+\n",
       "\"                           element.getAttribute(\\\"pd_refresh\\\") != \\\"true\\\" &&\\n\"+\n",
       "\"                           element.getAttribute(\\\"pd_refresh\\\") != \\\"false\\\";\\n\"+\n",
       "\"    if ( (!hasOptions && (execInfo.refresh || hasRefreshTarget || execInfo.options.widget) && !execInfo.script) \\n\"+\n",
       "\"        || (!execInfo.script && execInfo.pixieapp)){\\n\"+\n",
       "\"        execInfo.script = \\\"#refresh\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    var dialog = (execInfo.options.dialog == \\\"true\\\");\\n\"+\n",
       "\"    if ( dialog ){\\n\"+\n",
       "\"        execInfo.script = execInfo.script || \\\"#refresh\\\";\\n\"+\n",
       "\"        execInfo.refresh = true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (execInfo.script){\\n\"+\n",
       "\"        execInfo.script = execInfo.script.trim()\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        var entity = pd_controls.entity;\\n\"+\n",
       "\"        if (!entity){\\n\"+\n",
       "\"            var match = pd_controls.command.match(/display\\\\((\\\\w*),/);\\n\"+\n",
       "\"            if (match){\\n\"+\n",
       "\"                entity = match[1];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (entity){\\n\"+\n",
       "\"            var prolog = \\\"\\\";\\n\"+\n",
       "\"            if (!execInfo.script_run_raw){\\n\"+\n",
       "\"                console.log(\\\"Inject self with entity\\\", entity);\\n\"+\n",
       "\"                prolog = \\\"from pixiedust.utils.shellAccess import ShellAccess\\\\n\\\"+\\n\"+\n",
       "\"                    \\\"self=ShellAccess['\\\" + entity + \\\"']\\\\n\\\";\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            execInfo.script = prolog +\\n\"+\n",
       "\"                resolveScriptMacros( getParentScript(element) ) + '\\\\n' +\\n\"+\n",
       "\"                resolveScriptMacros(execInfo.script);\\n\"+\n",
       "\"            if ( execInfo.pixieapp){\\n\"+\n",
       "\"                var locOptions = execInfo.options;\\n\"+\n",
       "\"                locOptions.cell_id = pd_controls.options.cell_id;\\n\"+\n",
       "\"                locOptions.prefix = pd_controls.prefix;\\n\"+\n",
       "\"                if (pd_controls.options.nostore_cw){\\n\"+\n",
       "\"                    locOptions.nostore_cw = pd_controls.options.nostore_cw\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                function makePythonStringOrNone(s){\\n\"+\n",
       "\"                    return !s?\\\"None\\\":('\\\"\\\"\\\"' + s + '\\\"\\\"\\\"')\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                function getCellMetadata(){\\n\"+\n",
       "\"                    var cell = pixiedust.getCell(execInfo.options.cell_id);\\n\"+\n",
       "\"                    var retValue = cell?cell._metadata:{};\\n\"+\n",
       "\"                    return JSON.stringify(retValue || {});\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                execInfo.script += \\\"\\\\nfrom pixiedust.display.app.pixieapp import runPixieApp\\\" + \\n\"+\n",
       "\"                    \\\"\\\\ntrue=True\\\\nfalse=False\\\\nnull=None\\\" +\\n\"+\n",
       "\"                    \\\"\\\\nrunPixieApp('\\\" + \\n\"+\n",
       "\"                    execInfo.pixieapp + \\\"', options=\\\" + JSON.stringify(locOptions) \\n\"+\n",
       "\"                    + \\\",parent_command=\\\" + makePythonStringOrNone(applyEntity(pd_controls.command, execInfo.entity, execInfo.options))\\n\"+\n",
       "\"                    + \\\",parent_pixieapp=\\\" + makePythonStringOrNone(pd_controls.options.nostore_pixieapp)\\n\"+\n",
       "\"                    + \\\",cell_metadata=\\\" + getCellMetadata()\\n\"+\n",
       "\"                    + \\\")\\\";\\n\"+\n",
       "\"            }else if ( ( hasOptions || execInfo.refresh || execInfo.entity || execInfo.options.widget) && \\n\"+\n",
       "\"                    !execInfo.norefresh && $(element).children(\\\"target[pd_target]\\\").length == 0){\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                execInfo.script += \\\"\\\\n\\\" + applyEntity(pd_controls.command, execInfo.entity, execInfo.options)\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                execInfo.targetDivId=execInfo.targetDivId || \\\"pixiedust_dummy\\\";\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            console.log(\\\"Unable to extract entity variable from command\\\", pd_controls.command);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (!hasOptions && !execInfo.targetDivId && !execInfo.script){\\n\"+\n",
       "\"        if (!searchParents){\\n\"+\n",
       "\"            return null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return element.hasAttribute(\\\"pixiedust\\\")?null:readExecInfo(pd_controls, element.parentElement);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (!execInfo.script){\\n\"+\n",
       "\"        execInfo.script = applyEntity(pd_controls.command, execInfo.entity, execInfo.options);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    execInfo.nostoreMedatadata = true;\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    if ( pixiedust.dialogRoot ){\\n\"+\n",
       "\"        execInfo.targetDivId = execInfo.targetDivId || pixiedust.dialogRoot;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (\\\"send_input_reply\\\" in execInfo.options){\\n\"+\n",
       "\"        execInfo.send_input_reply = execInfo.options[\\\"send_input_reply\\\"];\\n\"+\n",
       "\"        delete execInfo.options[\\\"send_input_reply\\\"];\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (\\\"answer_input_reply\\\" in execInfo.options){\\n\"+\n",
       "\"        execInfo.answer_input_reply = execInfo.options[\\\"answer_input_reply\\\"];\\n\"+\n",
       "\"        delete execInfo.options[\\\"answer_input_reply\\\"];\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    execInfo.execute = function(){\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        if (!preRun(element)){\\n\"+\n",
       "\"            return;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"\\n\"+\n",
       "\"        pd_controls.sniffers = pd_controls.sniffers || [];\\n\"+\n",
       "\"        pd_controls.sniffers.forEach(function(sniffer){\\n\"+\n",
       "\"            if (this.script){\\n\"+\n",
       "\"                this.script = addOptions(this.script, eval('(' + sniffer + ')'));\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                pd_controls.command = addOptions(pd_controls.command, eval('(' + sniffer + ')'));\\n\"+\n",
       "\"            }    \\n\"+\n",
       "\"        }.bind(this));\\n\"+\n",
       "\"\\n\"+\n",
       "\"        var process_output = getScriptOfType(element, \\\"process_output\\\");\\n\"+\n",
       "\"        if (!process_output){\\n\"+\n",
       "\"            process_output = getScriptOfType($(\\\"#\\\" + this.targetDivId), \\\"process_output\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (process_output){\\n\"+\n",
       "\"            this.process_output = function(output){\\n\"+\n",
       "\"                new Function('output', process_output)(output);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if ( this.options.dialog == 'true' ){\\n\"+\n",
       "\"            pixiedust.executeInDialog(pd_controls, this);\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            pixiedust.executeDisplay(pd_controls, this);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var refreshTarget = element.getAttribute(\\\"pd_refresh\\\");\\n\"+\n",
       "\"    if (refreshTarget){\\n\"+\n",
       "\"        if (execInfo.targetDivId == \\\"pixiedust_dummy\\\"){\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            execInfo.targetDivId = \\\"pixiedust_dummy2\\\";\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        var retQueue = [execInfo];\\n\"+\n",
       "\"        var targets = refreshTarget.split(\\\",\\\");\\n\"+\n",
       "\"        $.each( targets, function(index){\\n\"+\n",
       "\"            var node = $(\\\"#\\\" + this);\\n\"+\n",
       "\"            if (node.length){\\n\"+\n",
       "\"                pd_controls.refreshTarget = this;\\n\"+\n",
       "\"                var thisexecInfo = {\\\"options\\\":{}};\\n\"+\n",
       "\"                thisexecInfo.options.targetDivId = this;\\n\"+\n",
       "\"                retQueue.push( readExecInfo(pd_controls, node.get(0), false, thisexecInfo) );\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        return retQueue\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    console.log(\\\"execution info: \\\", execInfo);\\n\"+\n",
       "\"    return execInfo;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function runElement(element, searchParents){\\n\"+\n",
       "\"    var pd_controls = element.getAttribute(\\\"pixiedust\\\");\\n\"+\n",
       "\"    if (!pd_controls){\\n\"+\n",
       "\"        $(element).parents(\\\"[pixiedust]\\\").each(function(){\\n\"+\n",
       "\"            pd_controls = pd_controls || this.getAttribute(\\\"pixiedust\\\");\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var execQueue = [];\\n\"+\n",
       "\"    function addToQueue(execInfo){\\n\"+\n",
       "\"        if (Array.isArray(execInfo)){\\n\"+\n",
       "\"            execInfo.forEach(function(exec){\\n\"+\n",
       "\"                addToQueue(exec);\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            execQueue.push(execInfo);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (pd_controls){\\n\"+\n",
       "\"        pd_controls = JSON.parse(pd_controls);\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        addToQueue( readExecInfo(pd_controls, element, searchParents) );\\n\"+\n",
       "\"\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $(element).children(\\\"target[pd_target]\\\").each(function(){\\n\"+\n",
       "\"            addToQueue( readExecInfo(pd_controls, this, searchParents))\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return execQueue;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function filterNonTargetElements(element){\\n\"+\n",
       "\"    if (element && [\\\"I\\\", \\\"DIV\\\"].includes(element.tagName)){\\n\"+\n",
       "\"        if (!element.hasAttribute(\\\"pd_options\\\") || $(element).find(\\\"> pd_options\\\").length == 0 || element.hasAttribute(\\\"pd_render_onload\\\")){\\n\"+\n",
       "\"            return filterNonTargetElements(element.parentElement);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return element;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readJSONAttribute(element, attrName){\\n\"+\n",
       "\"    var payload = resolveScriptMacros(element.getAttribute(attrName));\\n\"+\n",
       "\"    if (payload){\\n\"+\n",
       "\"        var parts = payload.split(\\\";\\\");\\n\"+\n",
       "\"        payload = {};\\n\"+\n",
       "\"        $.each( parts, function(){\\n\"+\n",
       "\"            var index = this.indexOf(\\\"=\\\");\\n\"+\n",
       "\"            if ( index > 0){\\n\"+\n",
       "\"                payload[this.substring(0, index)] = this.substring(index+1);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }else{\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $(element).find(\\\"> \\\" + attrName).each(function(){\\n\"+\n",
       "\"            try{\\n\"+\n",
       "\"                payload = JSON.parse($(this).text());\\n\"+\n",
       "\"                for (var key in payload) { \\n\"+\n",
       "\"                    payload[key] = resolveScriptMacros(payload[key]); \\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }catch(e){\\n\"+\n",
       "\"                console.log(\\\"Error parsing \\\" + attrName + \\\", invalid json\\\", e);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        })\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return payload;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"\\n\"+\n",
       "\"function processEvent(event){\\n\"+\n",
       "\"    if (event.pd_processed){\\n\"+\n",
       "\"        return;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var payload = readJSONAttribute(event.target, \\\"pd_event_payload\\\");\\n\"+\n",
       "\"    if (payload){\\n\"+\n",
       "\"        pixiedust.sendEvent(payload, $(event.target).uniqueId().attr('id'));\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execQueue = runElement(filterNonTargetElements(event.target));\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $.each( execQueue, function(index, value){\\n\"+\n",
       "\"        if (value){\\n\"+\n",
       "\"            event.pd_processed = true;\\n\"+\n",
       "\"            value.execute();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"}\\n\"+\n",
       "\"$(document).on( \\\"click\\\", \\\"[pixiedust]\\\", function(event){\\n\"+\n",
       "\"    if (event.target.tagName == \\\"SELECT\\\" || \\n\"+\n",
       "\"        (event.target.tagName == \\\"INPUT\\\" && (getAttribute(event.target, \\\"type\\\", \\\"\\\").toLowerCase() != \\\"button\\\")) || \\n\"+\n",
       "\"        $(event.target).is(':checkbox')){\\n\"+\n",
       "\"        return;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    processEvent(event)\\n\"+\n",
       "\"});\\n\"+\n",
       "\"\\n\"+\n",
       "\"$(document).on( \\\"change\\\", \\\"[pixiedust]\\\", function(event){\\n\"+\n",
       "\"    processEvent(event)\\n\"+\n",
       "\"});\\n\"+\n",
       "\"\\n\"+\n",
       "\"\\n\"+\n",
       "\"$(document).on(\\\"pd_event\\\", function(event, eventInfo){\\n\"+\n",
       "\"    targetDivId = eventInfo.targetDivId;\\n\"+\n",
       "\"    if (targetDivId){\\n\"+\n",
       "\"        eventHandlers = $(\\\"pd_event_handler\\\").filter(function(){\\n\"+\n",
       "\"            source = this.getAttribute(\\\"pd_source\\\");\\n\"+\n",
       "\"            if (source == \\\"*\\\" || source == targetDivId || source == eventInfo.type){\\n\"+\n",
       "\"                return true;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            return $(this).parents(\\\"[pd_target]\\\").filter(function(){\\n\"+\n",
       "\"                return this.getAttribute(\\\"pd_target\\\") == targetDivId;\\n\"+\n",
       "\"            }).length > 0;\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        eventHandlers.each(function(){\\n\"+\n",
       "\"            execQueue = runElement(this, false);\\n\"+\n",
       "\"            $.each( execQueue, function(index, value){\\n\"+\n",
       "\"                if (value){\\n\"+\n",
       "\"                    if (value.targetDivId == \\\"pixiedust_dummy\\\"){\\n\"+\n",
       "\"                        value.targetDivId = null;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    if (value.script){\\n\"+\n",
       "\"                        value.script = \\\"true=True\\\\nfalse=False\\\\neventInfo=\\\"+JSON.stringify(eventInfo) + \\\"\\\\n\\\" + value.script;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    value.execute();\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }else if ( eventInfo.type == \\\"pd_load\\\" && eventInfo.targetNode){\\n\"+\n",
       "\"        var execQueue = []\\n\"+\n",
       "\"        function accept(element){\\n\"+\n",
       "\"            return element.hasAttribute(\\\"pd_widget\\\") || element.hasAttribute(\\\"pd_render_onload\\\") || element.hasAttribute(\\\"pd_refresh_rate\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        eventInfo.targetNode.find(\\\"div\\\").each(function(){\\n\"+\n",
       "\"            if (accept(this)){\\n\"+\n",
       "\"                var thisId = $(this).uniqueId().attr('id');\\n\"+\n",
       "\"                this.setAttribute( \\\"id\\\", thisId );\\n\"+\n",
       "\"                if (!this.hasAttribute(\\\"pd_target\\\") ){\\n\"+\n",
       "\"                    this.setAttribute(\\\"pd_target\\\", this.getAttribute(\\\"id\\\") );\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                thisQueue = runElement(this, false);\\n\"+\n",
       "\"                var loadingDiv = this;\\n\"+\n",
       "\"                $.each( thisQueue, function(index, value){\\n\"+\n",
       "\"                    if (value){\\n\"+\n",
       "\"                        value.partialUpdate = true;\\n\"+\n",
       "\"                        execQueue.push( value );\\n\"+\n",
       "\"                        refreshRate = loadingDiv.getAttribute(\\\"pd_refresh_rate\\\");\\n\"+\n",
       "\"                        if (refreshRate){\\n\"+\n",
       "\"                            var ival = setInterval(function(){\\n\"+\n",
       "\"                                if ($('#' + thisId).length == 0){\\n\"+\n",
       "\"                                    console.log(\\\"Clearing refresh timer\\\", ival);\\n\"+\n",
       "\"                                    clearInterval(ival);\\n\"+\n",
       "\"                                    return;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                                value.execute();\\n\"+\n",
       "\"                            }, parseInt( refreshRate) );\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                })\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $.each( execQueue, function(index, value){\\n\"+\n",
       "\"            value.execute();\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    else{\\n\"+\n",
       "\"        if ( eventInfo.type != \\\"pd_load\\\"){\\n\"+\n",
       "\"            console.log(\\\"Warning: got a pd_event with no targetDivId\\\", eventInfo);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"});\";\n",
       "    try{\n",
       "        g.appendChild(document.createTextNode(code));\n",
       "    }catch(e){\n",
       "        g.text = code;\n",
       "    }\n",
       "    s.parentNode.insertBefore(g,s);\n",
       "}"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                    \n",
       "\n",
       "<style>\n",
       "\n",
       "</style>\n",
       "\n",
       "<div id=\"fig_el1087851565361448177441910\"></div>\n",
       "<script>\n",
       "function mpld3_load_lib(url, callback){\n",
       "  var s = document.createElement('script');\n",
       "  s.src = url;\n",
       "  s.async = true;\n",
       "  s.onreadystatechange = s.onload = callback;\n",
       "  s.onerror = function(){console.warn(\"failed to load library \" + url);};\n",
       "  document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "}\n",
       "\n",
       "if(typeof(mpld3) !== \"undefined\" && mpld3._mpld3IsLoaded){\n",
       "   // already loaded: just create the figure\n",
       "   !function(mpld3){\n",
       "       // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions7e232629\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title7e232629\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title7e232629\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields7e232629\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field7e232629-f6\" class=\"field7e232629\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f2\" class=\"field7e232629\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f3\" class=\"field7e232629\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f4\" class=\"field7e232629\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f1\" class=\"field7e232629\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f9\" class=\"field7e232629\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f8\" class=\"field7e232629\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f5\" class=\"field7e232629\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f7\" class=\"field7e232629\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields7e232629\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f9-keyFields7e232629\" data-field=\"name\">name<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields7e232629\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f1-valueFields7e232629\" data-field=\"mpg\">mpg<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f3-valueFields7e232629\" data-field=\"engine\">engine<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields7e232629\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML7e232629');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML7e232629');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution7e232629\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution7e232629\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution7e232629\").length > 0 ){\n",
       "                    $(\"#execution7e232629\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone7e232629 != \"undefined\"){\n",
       "                    onDisplayDone7e232629();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='stacked',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='7e232629',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields7e232629'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields7e232629'));\n",
       "$('#chartOptions7e232629 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions7e232629 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS7e232629').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields7e232629').length && $('#valueFields7e232629').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields7e232629').length && $('#keyFields7e232629').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions7e232629 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field7e232629').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field7e232629-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields7e232629, #valueFields7e232629').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field7e232629');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-7e232629').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "       mpld3.draw_figure(\"fig_el1087851565361448177441910\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.5, -0.19259659322238554], \"rotation\": -0.0, \"id\": \"el108785158847184\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.4238351254480287, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785155039760\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5876144962166467, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785155040528\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1110.375], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785155899920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785155898192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785155900944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155952144\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785157354704\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785155382608\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785156063888\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785156063248\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785156011600\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785156009552\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156011280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785154109456\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785154108944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785152702096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785152701904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785108499536\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785154536464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785154537296\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785152684880\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785152683344\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785154502288\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785154501840\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785153107600\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785153105424\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785157754320\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785152821904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785154375248\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785154375056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785154035280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785162096400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785162098064\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156414544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785156416208\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785156417488\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785156505616\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785156507280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785155120464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155122128\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155279504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785155281168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785155282832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155231312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155040272\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data20\", \"id\": \"el108785155041168\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785154950032\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785156642128\", \"ydomain\": [0.0, 1110.375], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.775, 0.755]}], \"height\": 360.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data21\": [[0.3640979689366787, 1.0653789551140544], [0.6359020310633214, 1.0653789551140544], [0.639884508164078, 1.0653789551140544], [0.639884508164078, 1.072737306843267], [0.639884508164078, 1.1242457689477556], [0.639884508164078, 1.1316041206769685], [0.6359020310633214, 1.1316041206769685], [0.3640979689366787, 1.1316041206769685], [0.36011549183592195, 1.1316041206769685], [0.36011549183592195, 1.1242457689477556], [0.36011549183592195, 1.072737306843267], [0.36011549183592195, 1.0653789551140544], [0.3640979689366787, 1.0653789551140544]], \"data12\": [[10.75, 0.0, 400.0], [11.25, 0.0, 400.0], [11.25, 400.0, 412.0], [10.75, 400.0, 412.0]], \"data16\": [[15.75, 0.0, 142.0], [16.25, 0.0, 142.0], [16.25, 142.0, 205.0], [15.75, 142.0, 205.0]], \"data11\": [[9.75, 0.0, 318.0], [10.25, 0.0, 318.0], [10.25, 318.0, 329.0], [9.75, 318.0, 329.0]], \"data17\": [[16.75, 0.0, 79.0], [17.25, 0.0, 79.0], [17.25, 79.0, 118.1], [16.75, 79.0, 118.1]], \"data14\": [[12.75, 0.0, 491.0], [13.25, 0.0, 491.0], [13.25, 491.0, 585.2], [12.75, 491.0, 585.2]], \"data10\": [[8.75, 0.0, 98.0], [9.25, 0.0, 98.0], [9.25, 98.0, 126.0], [8.75, 98.0, 126.0]], \"data15\": [[14.75, 0.0, 518.0], [15.25, 0.0, 518.0], [15.25, 518.0, 673.6], [14.75, 518.0, 673.6]], \"data20\": [[0.3680804460374353, 1.0874540103016925, 0.5318598168060533], [0.407905217045002, 1.0874540103016925, 0.5716845878136201], [0.407905217045002, 1.1132082413539368, 0.5716845878136201], [0.3680804460374353, 1.1132082413539368, 0.5318598168060533]], \"data19\": [[19.75, 0.0, 187.0], [20.25, 0.0, 187.0], [20.25, 187.0, 245.5], [19.75, 187.0, 245.5]], \"data18\": [[17.75, 0.0, 89.0], [18.25, 0.0, 89.0], [18.25, 89.0, 126.7], [17.75, 89.0, 126.7]], \"data08\": [[6.75, 0.0, 156.0], [7.25, 0.0, 156.0], [7.25, 156.0, 181.8], [6.75, 156.0, 181.8]], \"data09\": [[7.75, 0.0, 13.75, 225.0, 225.0], [8.25, 0.0, 14.25, 225.0, 225.0], [8.25, 225.0, 14.25, 245.6, 243.0], [7.75, 225.0, 13.75, 245.6, 243.0]], \"data06\": [[4.75, 0.0, 262.0], [5.25, 0.0, 262.0], [5.25, 262.0, 282.0], [4.75, 262.0, 282.0]], \"data07\": [[5.75, 0.0, 250.0], [6.25, 0.0, 250.0], [6.25, 250.0, 266.0], [5.75, 250.0, 266.0]], \"data04\": [[2.75, 0.0, 112.0], [3.25, 0.0, 112.0], [3.25, 112.0, 139.0], [2.75, 112.0, 139.0]], \"data05\": [[3.75, 0.0, 555.0], [4.25, 0.0, 555.0], [4.25, 555.0, 588.5], [3.75, 555.0, 588.5]], \"data02\": [[0.75, 0.0, 121.0], [1.25, 0.0, 121.0], [1.25, 121.0, 142.5], [0.75, 121.0, 142.5]], \"data03\": [[1.75, 0.0, 1010.0], [2.25, 0.0, 1010.0], [2.25, 1010.0, 1057.5], [1.75, 1010.0, 1057.5]], \"data13\": [[11.75, 0.0, 120.0], [12.25, 0.0, 120.0], [12.25, 120.0, 156.0], [11.75, 120.0, 156.0]], \"data01\": [[-0.25, 0.0, 18.75, 97.0, 97.0], [0.25, 0.0, 19.25, 97.0, 97.0], [0.25, 97.0, 19.25, 131.3, 124.0], [-0.25, 97.0, 18.75, 131.3, 124.0]]}, \"id\": \"el108785156536144\"});\n",
       "   }(mpld3);\n",
       "}else if(typeof define === \"function\" && define.amd){\n",
       "   // require.js is available: use it to load d3/mpld3\n",
       "   require.config({paths: {d3: \"https://mpld3.github.io/js/d3.v3.min\"}});\n",
       "   require([\"d3\"], function(d3){\n",
       "      window.d3 = d3;\n",
       "      mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "         // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions7e232629\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title7e232629\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title7e232629\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields7e232629\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field7e232629-f6\" class=\"field7e232629\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f2\" class=\"field7e232629\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f3\" class=\"field7e232629\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f4\" class=\"field7e232629\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f1\" class=\"field7e232629\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f9\" class=\"field7e232629\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f8\" class=\"field7e232629\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f5\" class=\"field7e232629\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f7\" class=\"field7e232629\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields7e232629\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f9-keyFields7e232629\" data-field=\"name\">name<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields7e232629\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f1-valueFields7e232629\" data-field=\"mpg\">mpg<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f3-valueFields7e232629\" data-field=\"engine\">engine<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields7e232629\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML7e232629');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML7e232629');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution7e232629\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution7e232629\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution7e232629\").length > 0 ){\n",
       "                    $(\"#execution7e232629\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone7e232629 != \"undefined\"){\n",
       "                    onDisplayDone7e232629();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='stacked',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='7e232629',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields7e232629'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields7e232629'));\n",
       "$('#chartOptions7e232629 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions7e232629 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS7e232629').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields7e232629').length && $('#valueFields7e232629').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields7e232629').length && $('#keyFields7e232629').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions7e232629 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field7e232629').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field7e232629-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields7e232629, #valueFields7e232629').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field7e232629');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-7e232629').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "         mpld3.draw_figure(\"fig_el1087851565361448177441910\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.5, -0.19259659322238554], \"rotation\": -0.0, \"id\": \"el108785158847184\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.4238351254480287, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785155039760\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5876144962166467, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785155040528\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1110.375], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785155899920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785155898192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785155900944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155952144\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785157354704\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785155382608\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785156063888\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785156063248\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785156011600\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785156009552\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156011280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785154109456\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785154108944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785152702096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785152701904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785108499536\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785154536464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785154537296\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785152684880\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785152683344\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785154502288\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785154501840\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785153107600\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785153105424\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785157754320\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785152821904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785154375248\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785154375056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785154035280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785162096400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785162098064\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156414544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785156416208\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785156417488\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785156505616\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785156507280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785155120464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155122128\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155279504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785155281168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785155282832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155231312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155040272\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data20\", \"id\": \"el108785155041168\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785154950032\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785156642128\", \"ydomain\": [0.0, 1110.375], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.775, 0.755]}], \"height\": 360.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data21\": [[0.3640979689366787, 1.0653789551140544], [0.6359020310633214, 1.0653789551140544], [0.639884508164078, 1.0653789551140544], [0.639884508164078, 1.072737306843267], [0.639884508164078, 1.1242457689477556], [0.639884508164078, 1.1316041206769685], [0.6359020310633214, 1.1316041206769685], [0.3640979689366787, 1.1316041206769685], [0.36011549183592195, 1.1316041206769685], [0.36011549183592195, 1.1242457689477556], [0.36011549183592195, 1.072737306843267], [0.36011549183592195, 1.0653789551140544], [0.3640979689366787, 1.0653789551140544]], \"data12\": [[10.75, 0.0, 400.0], [11.25, 0.0, 400.0], [11.25, 400.0, 412.0], [10.75, 400.0, 412.0]], \"data16\": [[15.75, 0.0, 142.0], [16.25, 0.0, 142.0], [16.25, 142.0, 205.0], [15.75, 142.0, 205.0]], \"data11\": [[9.75, 0.0, 318.0], [10.25, 0.0, 318.0], [10.25, 318.0, 329.0], [9.75, 318.0, 329.0]], \"data17\": [[16.75, 0.0, 79.0], [17.25, 0.0, 79.0], [17.25, 79.0, 118.1], [16.75, 79.0, 118.1]], \"data14\": [[12.75, 0.0, 491.0], [13.25, 0.0, 491.0], [13.25, 491.0, 585.2], [12.75, 491.0, 585.2]], \"data10\": [[8.75, 0.0, 98.0], [9.25, 0.0, 98.0], [9.25, 98.0, 126.0], [8.75, 98.0, 126.0]], \"data15\": [[14.75, 0.0, 518.0], [15.25, 0.0, 518.0], [15.25, 518.0, 673.6], [14.75, 518.0, 673.6]], \"data20\": [[0.3680804460374353, 1.0874540103016925, 0.5318598168060533], [0.407905217045002, 1.0874540103016925, 0.5716845878136201], [0.407905217045002, 1.1132082413539368, 0.5716845878136201], [0.3680804460374353, 1.1132082413539368, 0.5318598168060533]], \"data19\": [[19.75, 0.0, 187.0], [20.25, 0.0, 187.0], [20.25, 187.0, 245.5], [19.75, 187.0, 245.5]], \"data18\": [[17.75, 0.0, 89.0], [18.25, 0.0, 89.0], [18.25, 89.0, 126.7], [17.75, 89.0, 126.7]], \"data08\": [[6.75, 0.0, 156.0], [7.25, 0.0, 156.0], [7.25, 156.0, 181.8], [6.75, 156.0, 181.8]], \"data09\": [[7.75, 0.0, 13.75, 225.0, 225.0], [8.25, 0.0, 14.25, 225.0, 225.0], [8.25, 225.0, 14.25, 245.6, 243.0], [7.75, 225.0, 13.75, 245.6, 243.0]], \"data06\": [[4.75, 0.0, 262.0], [5.25, 0.0, 262.0], [5.25, 262.0, 282.0], [4.75, 262.0, 282.0]], \"data07\": [[5.75, 0.0, 250.0], [6.25, 0.0, 250.0], [6.25, 250.0, 266.0], [5.75, 250.0, 266.0]], \"data04\": [[2.75, 0.0, 112.0], [3.25, 0.0, 112.0], [3.25, 112.0, 139.0], [2.75, 112.0, 139.0]], \"data05\": [[3.75, 0.0, 555.0], [4.25, 0.0, 555.0], [4.25, 555.0, 588.5], [3.75, 555.0, 588.5]], \"data02\": [[0.75, 0.0, 121.0], [1.25, 0.0, 121.0], [1.25, 121.0, 142.5], [0.75, 121.0, 142.5]], \"data03\": [[1.75, 0.0, 1010.0], [2.25, 0.0, 1010.0], [2.25, 1010.0, 1057.5], [1.75, 1010.0, 1057.5]], \"data13\": [[11.75, 0.0, 120.0], [12.25, 0.0, 120.0], [12.25, 120.0, 156.0], [11.75, 120.0, 156.0]], \"data01\": [[-0.25, 0.0, 18.75, 97.0, 97.0], [0.25, 0.0, 19.25, 97.0, 97.0], [0.25, 97.0, 19.25, 131.3, 124.0], [-0.25, 97.0, 18.75, 131.3, 124.0]]}, \"id\": \"el108785156536144\"});\n",
       "      });\n",
       "    });\n",
       "}else{\n",
       "    // require.js not available: dynamically load d3 & mpld3\n",
       "    mpld3_load_lib(\"https://mpld3.github.io/js/d3.v3.min.js\", function(){\n",
       "         mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "                 // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions7e232629\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title7e232629\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title7e232629\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields7e232629\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field7e232629-f6\" class=\"field7e232629\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f2\" class=\"field7e232629\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f3\" class=\"field7e232629\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f4\" class=\"field7e232629\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f1\" class=\"field7e232629\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f9\" class=\"field7e232629\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f8\" class=\"field7e232629\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f5\" class=\"field7e232629\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field7e232629-f7\" class=\"field7e232629\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field7e232629-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields7e232629\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f9-keyFields7e232629\" data-field=\"name\">name<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields7e232629\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f1-valueFields7e232629\" data-field=\"mpg\">mpg<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field7e232629-f3-valueFields7e232629\" data-field=\"engine\">engine<a class=\"field7e232629-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields7e232629\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML7e232629');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML7e232629');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution7e232629\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution7e232629\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution7e232629\").length > 0 ){\n",
       "                    $(\"#execution7e232629\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone7e232629 != \"undefined\"){\n",
       "                    onDisplayDone7e232629();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='stacked',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='7e232629',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields7e232629'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields7e232629'));\n",
       "$('#chartOptions7e232629 *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions7e232629 *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS7e232629').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields7e232629').length && $('#valueFields7e232629').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields7e232629').length && $('#keyFields7e232629').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions7e232629 *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field7e232629').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field7e232629-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields7e232629, #valueFields7e232629').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field7e232629');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-7e232629').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "                 mpld3.draw_figure(\"fig_el1087851565361448177441910\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.5, -0.19259659322238554], \"rotation\": -0.0, \"id\": \"el108785158847184\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.4238351254480287, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785155039760\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5876144962166467, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785155040528\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1110.375], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785155899920\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785155898192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785155900944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155952144\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785157354704\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785155382608\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785156063888\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785156063248\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785156011600\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785156009552\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156011280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785154109456\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785154108944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785152702096\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785152701904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785108499536\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785154536464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785154537296\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785152684880\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785152683344\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785154502288\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785154501840\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785153107600\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785153105424\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785157754320\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785152821904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785154375248\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785154375056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785154035280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 3, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785162096400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785162098064\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785156414544\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785156416208\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785156417488\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785156505616\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785156507280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785155120464\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155122128\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155279504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785155281168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 4, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785155282832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 2, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785155231312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155040272\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data20\", \"id\": \"el108785155041168\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785154950032\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785156642128\", \"ydomain\": [0.0, 1110.375], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.775, 0.755]}], \"height\": 360.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data21\": [[0.3640979689366787, 1.0653789551140544], [0.6359020310633214, 1.0653789551140544], [0.639884508164078, 1.0653789551140544], [0.639884508164078, 1.072737306843267], [0.639884508164078, 1.1242457689477556], [0.639884508164078, 1.1316041206769685], [0.6359020310633214, 1.1316041206769685], [0.3640979689366787, 1.1316041206769685], [0.36011549183592195, 1.1316041206769685], [0.36011549183592195, 1.1242457689477556], [0.36011549183592195, 1.072737306843267], [0.36011549183592195, 1.0653789551140544], [0.3640979689366787, 1.0653789551140544]], \"data12\": [[10.75, 0.0, 400.0], [11.25, 0.0, 400.0], [11.25, 400.0, 412.0], [10.75, 400.0, 412.0]], \"data16\": [[15.75, 0.0, 142.0], [16.25, 0.0, 142.0], [16.25, 142.0, 205.0], [15.75, 142.0, 205.0]], \"data11\": [[9.75, 0.0, 318.0], [10.25, 0.0, 318.0], [10.25, 318.0, 329.0], [9.75, 318.0, 329.0]], \"data17\": [[16.75, 0.0, 79.0], [17.25, 0.0, 79.0], [17.25, 79.0, 118.1], [16.75, 79.0, 118.1]], \"data14\": [[12.75, 0.0, 491.0], [13.25, 0.0, 491.0], [13.25, 491.0, 585.2], [12.75, 491.0, 585.2]], \"data10\": [[8.75, 0.0, 98.0], [9.25, 0.0, 98.0], [9.25, 98.0, 126.0], [8.75, 98.0, 126.0]], \"data15\": [[14.75, 0.0, 518.0], [15.25, 0.0, 518.0], [15.25, 518.0, 673.6], [14.75, 518.0, 673.6]], \"data20\": [[0.3680804460374353, 1.0874540103016925, 0.5318598168060533], [0.407905217045002, 1.0874540103016925, 0.5716845878136201], [0.407905217045002, 1.1132082413539368, 0.5716845878136201], [0.3680804460374353, 1.1132082413539368, 0.5318598168060533]], \"data19\": [[19.75, 0.0, 187.0], [20.25, 0.0, 187.0], [20.25, 187.0, 245.5], [19.75, 187.0, 245.5]], \"data18\": [[17.75, 0.0, 89.0], [18.25, 0.0, 89.0], [18.25, 89.0, 126.7], [17.75, 89.0, 126.7]], \"data08\": [[6.75, 0.0, 156.0], [7.25, 0.0, 156.0], [7.25, 156.0, 181.8], [6.75, 156.0, 181.8]], \"data09\": [[7.75, 0.0, 13.75, 225.0, 225.0], [8.25, 0.0, 14.25, 225.0, 225.0], [8.25, 225.0, 14.25, 245.6, 243.0], [7.75, 225.0, 13.75, 245.6, 243.0]], \"data06\": [[4.75, 0.0, 262.0], [5.25, 0.0, 262.0], [5.25, 262.0, 282.0], [4.75, 262.0, 282.0]], \"data07\": [[5.75, 0.0, 250.0], [6.25, 0.0, 250.0], [6.25, 250.0, 266.0], [5.75, 250.0, 266.0]], \"data04\": [[2.75, 0.0, 112.0], [3.25, 0.0, 112.0], [3.25, 112.0, 139.0], [2.75, 112.0, 139.0]], \"data05\": [[3.75, 0.0, 555.0], [4.25, 0.0, 555.0], [4.25, 555.0, 588.5], [3.75, 555.0, 588.5]], \"data02\": [[0.75, 0.0, 121.0], [1.25, 0.0, 121.0], [1.25, 121.0, 142.5], [0.75, 121.0, 142.5]], \"data03\": [[1.75, 0.0, 1010.0], [2.25, 0.0, 1010.0], [2.25, 1010.0, 1057.5], [1.75, 1010.0, 1057.5]], \"data13\": [[11.75, 0.0, 120.0], [12.25, 0.0, 120.0], [12.25, 120.0, 156.0], [11.75, 120.0, 156.0]], \"data01\": [[-0.25, 0.0, 18.75, 97.0, 97.0], [0.25, 0.0, 19.25, 97.0, 97.0], [0.25, 97.0, 19.25, 131.3, 124.0], [-0.25, 97.0, 18.75, 131.3, 124.0]]}, \"id\": \"el108785156536144\"});\n",
       "            })\n",
       "         });\n",
       "}\n",
       "</script>\n",
       "                    \n",
       "                        <div>Some labels are not displayed because of a lack of space. Click on Stretch image to see them all</div>\n",
       "                    \n",
       "                        <div>Warning: While great, D3 rendering is using MPLD3 library which has limitations that have not yet been fixed</div>\n",
       "                    \n",
       "                "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='stacked',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='7e232629')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "if (typeof pixiedust == \"undefined\"){\n",
       "    var s=document.getElementsByTagName('script')[0];\n",
       "    var g=document.createElement( 'style'  );\n",
       "    g.type='text/css';\n",
       "    g.defer=false; \n",
       "    g.async=false;\n",
       "    var code = \"pd_script,pd_dialog,pd_options,pd_target,pd_event_payload{\\n\"+\n",
       "\"    display:none\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".output_subarea.rendered_html {\\n\"+\n",
       "\"    max-width: 100%;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust {\\n\"+\n",
       "\"    border: 1px solid #ececec;\\n\"+\n",
       "\"    border-radius: 3px;\\n\"+\n",
       "\"    margin: 10px 0;\\n\"+\n",
       "\"    padding: 10px;\\n\"+\n",
       "\"\\n\"+\n",
       "\"    color: #333333;\\n\"+\n",
       "\"    font-size: small;\\n\"+\n",
       "\"    font-weight: 300;\\n\"+\n",
       "\"    letter-spacing: 0.5px;\\n\"+\n",
       "\"    line-height: normal;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-group {\\n\"+\n",
       "\"    border-right: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .display-type-button:not(:first-child) {\\n\"+\n",
       "\"    margin-left: 10px !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-default {\\n\"+\n",
       "\"    border-radius: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-toolbar .btn-default.focus,\\n\"+\n",
       "\".pixiedust-toolbar .btn-default:focus,\\n\"+\n",
       "\".pixiedust-toolbar .btn-default:hover,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default.focus,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default:focus,\\n\"+\n",
       "\".pixiedust .chart-button-group .btn-default:hover {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #2e6da4;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu {\\n\"+\n",
       "\"    background-color: #ffffff;\\n\"+\n",
       "\"    border-color: rgba(0, 0, 0, 0.15);\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu ul {\\n\"+\n",
       "\"    list-style: outside none none;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li {\\n\"+\n",
       "\"    cursor: pointer;\\n\"+\n",
       "\"    padding: 8px 12px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li:hover {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"    cursor: pointer;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .dropdown-menu li > span {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    margin-left: 10px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn .fa-chevron-down {\\n\"+\n",
       "\"    margin-left: 25px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .btn-group.open .dropdown-toggle {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #2e6da4;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog {\\n\"+\n",
       "\"    width: 50vw;\\n\"+\n",
       "\"    min-width: 700px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-default:focus,\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-default:hover {\\n\"+\n",
       "\"    background-color: #e6e6e6;\\n\"+\n",
       "\"    border-color: #adadad;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"    transition: background-color 0.15s ease-out 0s;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary:focus,\\n\"+\n",
       "\".pixiedust .modal-dialog .btn-primary:hover {\\n\"+\n",
       "\"    background-color: #286090;\\n\"+\n",
       "\"    border-color: #204d74;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    color: #ffffff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header .close {\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"    opacity: 1;\\n\"+\n",
       "\"    text-shadow: none;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-header .close:hover {\\n\"+\n",
       "\"    opacity: 0.5;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-body {\\n\"+\n",
       "\"    padding: 25px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .modal-footer .btn {\\n\"+\n",
       "\"    min-width: 75px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .executionTime {\\n\"+\n",
       "\"    color: gray;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .expandButton {\\n\"+\n",
       "\"    background-color: transparent;\\n\"+\n",
       "\"    border: 0 none;\\n\"+\n",
       "\"    font-size: 15px;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"    right: 0;\\n\"+\n",
       "\"    text-align: right;\\n\"+\n",
       "\"    top: 0;\\n\"+\n",
       "\"    width: 100%;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton:hover,\\n\"+\n",
       "\".pixiedust .expandButton:active,\\n\"+\n",
       "\".pixiedust .expandButton:focus {\\n\"+\n",
       "\"    background-color: transparent;\\n\"+\n",
       "\"    color: #337ab7;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton:not(.collapsed) {\\n\"+\n",
       "\"    float: right;\\n\"+\n",
       "\"    width: initial;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton > i.fa:before {\\n\"+\n",
       "\"    content: \\\"\\\\f066\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton.collapsed > i.fa:before {\\n\"+\n",
       "\"    content: \\\"\\\\f065\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .expandButton.collapsed:before {\\n\"+\n",
       "\"    color: #999999;\\n\"+\n",
       "\"    content: \\\"Pixiedust output minimized\\\";\\n\"+\n",
       "\"    float: left;\\n\"+\n",
       "\"    font-size: 14px;\\n\"+\n",
       "\"    font-style: italic;\\n\"+\n",
       "\"    font-weight: 300;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .chart-button-group {\\n\"+\n",
       "\"    border-bottom: 1px solid #ececec;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt {\\n\"+\n",
       "\"    margin: 6px 0;\\n\"+\n",
       "\"    padding: 6px 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt:first-child {\\n\"+\n",
       "\"    margin-top: 0;\\n\"+\n",
       "\"    padding-top: 0;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox { padding-left: 20px; }\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"    padding-left: 5px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label::before {\\n\"+\n",
       "\"    content: \\\"\\\";\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: absolute;\\n\"+\n",
       "\"    width: 17px;\\n\"+\n",
       "\"    height: 17px;\\n\"+\n",
       "\"    left: 0;\\n\"+\n",
       "\"    margin-left: -20px;\\n\"+\n",
       "\"    border: 1px solid #cccccc;\\n\"+\n",
       "\"    background-color: #fff;\\n\"+\n",
       "\"    -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"    -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"    transition: border 0.15s ease-in-out, color 0.15s ease-in-out;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox label::after {\\n\"+\n",
       "\"    display: inline-block;\\n\"+\n",
       "\"    position: absolute;\\n\"+\n",
       "\"    width: 16px;\\n\"+\n",
       "\"    height: 16px;\\n\"+\n",
       "\"    left: 0;\\n\"+\n",
       "\"    top: 0;\\n\"+\n",
       "\"    margin-left: -20px;\\n\"+\n",
       "\"    padding-left: 2px;\\n\"+\n",
       "\"    padding-top: 1px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"] {\\n\"+\n",
       "\"    opacity: 0;\\n\"+\n",
       "\"    z-index: 1;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"]:focus + label::before {\\n\"+\n",
       "\"    outline: thin dotted;\\n\"+\n",
       "\"    outline: 5px auto -webkit-focus-ring-color;\\n\"+\n",
       "\"    outline-offset: -2px;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox input[type=\\\"checkbox\\\"]:checked + label::after {\\n\"+\n",
       "\"    font-family: 'FontAwesome';\\n\"+\n",
       "\"    content: \\\"\\\\f00c\\\";\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox.checkbox-inline { margin-top: 0; }\\n\"+\n",
       "\"\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox-primary input[type=\\\"checkbox\\\"]:checked + label::before {\\n\"+\n",
       "\"    background-color: #337ab7;\\n\"+\n",
       "\"    border-color: #337ab7;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust .rendererOpt.checkbox-primary input[type=\\\"checkbox\\\"]:checked + label::after {\\n\"+\n",
       "\"    color: #fff;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog {\\n\"+\n",
       "\"    width: 95% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog .pixiedust {\\n\"+\n",
       "\"    border: none;\\n\"+\n",
       "\"    height: calc(100vh - 200px);\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .modal-dialog .expandButton {\\n\"+\n",
       "\"    visibility: hidden;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app .pixiedust-output-wrapper,\\n\"+\n",
       "\".pixiedust-app .pixiedustWrapperHTML,\\n\"+\n",
       "\".pixiedust-app [pixiedust]:not(.pixiedust) {\\n\"+\n",
       "\"    height: 100%;\\n\"+\n",
       "\"    position: relative;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-default-dialog .modal-dialog {\\n\"+\n",
       "\"  max-width: 1000px !important;\\n\"+\n",
       "\"  min-width: 600px !important;\\n\"+\n",
       "\"  width: 50% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-default-dialog .modal-dialog .pixiedust {\\n\"+\n",
       "\"  height: auto !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize.modal {\\n\"+\n",
       "\"    border: 0 none;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    padding: 0 !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize .modal-dialog {\\n\"+\n",
       "\"    height: 100% !important;\\n\"+\n",
       "\"    margin: 0;\\n\"+\n",
       "\"    overflow: hidden;\\n\"+\n",
       "\"    padding: 0;\\n\"+\n",
       "\"    width: 100% !important;\\n\"+\n",
       "\"}\\n\"+\n",
       "\".pixiedust-app.pixiedust-maximize .modal-dialog .pixiedust {\\n\"+\n",
       "\"    height: calc(100vh - 88px);\\n\"+\n",
       "\"    padding: 0px;\\n\"+\n",
       "\"}\";\n",
       "    try{\n",
       "        g.appendChild(document.createTextNode(code));\n",
       "    }catch(e){\n",
       "        g.text = code;\n",
       "    }\n",
       "    s.parentNode.insertBefore(g,s);\n",
       "}"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "if (typeof pixiedust == \"undefined\"){\n",
       "    var s=document.getElementsByTagName('script')[0];\n",
       "    var g=document.createElement( 'script'  );\n",
       "    g.type= 'text/javascript';\n",
       "    g.defer=false; \n",
       "    g.async=false;\n",
       "    var code = \"var pixiedust = (function(){\\n\"+\n",
       "\"    return {\\n\"+\n",
       "\"        input_reply_queue: {\\n\"+\n",
       "\"            inflight: null,\\n\"+\n",
       "\"            queue: [],\\n\"+\n",
       "\"            callbacks: {},\\n\"+\n",
       "\"            counter: 0,\\n\"+\n",
       "\"            registerCallback: function(cb){\\n\"+\n",
       "\"                var handle = 'id_' + this.counter++;\\n\"+\n",
       "\"                this.callbacks[handle] = cb;\\n\"+\n",
       "\"                return \\\"$$\\\" + handle + \\\"$$\\\";\\n\"+\n",
       "\"            },\\n\"+\n",
       "\"            parseCallback: function(content){\\n\"+\n",
       "\"                var match = content.text.match(/\\\\$\\\\$(.*)\\\\$\\\\$((.|\\\\n)*)/i);\\n\"+\n",
       "\"                if (match){\\n\"+\n",
       "\"                    content.text = match[2].trim();\\n\"+\n",
       "\"                    if (!this.callbacks[match[1]]){\\n\"+\n",
       "\"                        console.log(\\\"Cannot find callbacks for \\\" + match[1]);\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        var retValue = this.callbacks[match[1]];\\n\"+\n",
       "\"                        delete this.callbacks[match[1]];\\n\"+\n",
       "\"                        return retValue;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                return null;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        getCell: function(cell_id){\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var cells=IPython.notebook.get_cells().filter(function(cell){\\n\"+\n",
       "\"                return cell.cell_id==cell_id;\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            return cells.length>0?cells[0]:null;\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        executeDisplay:function(pd_ctls, user_ctls){\\n\"+\n",
       "\"            var pd_controls = pd_ctls || {};\\n\"+\n",
       "\"            var user_controls = user_ctls || {\\\"options\\\":{}};\\n\"+\n",
       "\"            if (user_controls.inFlight){\\n\"+\n",
       "\"                console.log(\\\"Ignoring request to execute Display that is already being executed\\\");\\n\"+\n",
       "\"                return;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            user_controls.inFlight = true;\\n\"+\n",
       "\"            var options = $.extend({}, pd_controls.options || {}, user_controls.options || {} );\\n\"+\n",
       "\"            function wrapDisplayDone(fn){\\n\"+\n",
       "\"                return function(targetNode, targetNodeUpdated){\\n\"+\n",
       "\"                    user_controls.inFlight = false;\\n\"+\n",
       "\"                    if(targetNodeUpdated){\\n\"+\n",
       "\"                        if (fn){\\n\"+\n",
       "\"                            fn.apply(this);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        $(document).trigger('pd_event', {type:\\\"pd_load\\\", targetNode: targetNode});\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            user_controls.onDisplayDone = wrapDisplayDone( user_controls.onDisplayDone);\\n\"+\n",
       "\"            var pd_prefix = pd_controls.prefix;\\n\"+\n",
       "\"            var $targetDivId = user_controls.targetDivId;\\n\"+\n",
       "\"            !function() {\\n\"+\n",
       "\"    function getTargetNodeId(override=null){\\n\"+\n",
       "\"        return override || $targetDivId || (\\\"wrapperHTML\\\"+ pd_prefix);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function getTargetNode(override=null){\\n\"+\n",
       "\"        return $('#' + getTargetNodeId(override));\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function checkRootInit(){\\n\"+\n",
       "\"        node = getTargetNode();\\n\"+\n",
       "\"        var retValue = node.is(\\\"[pd_init]\\\");\\n\"+\n",
       "\"        if (retValue){\\n\"+\n",
       "\"            node.removeAttr(\\\"pd_init\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return retValue;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function setText(targetNode, contents, pdCtl = null, userCtl = null){\\n\"+\n",
       "\"        var pd_elements = []\\n\"+\n",
       "\"        targetNode.children().each(function(){\\n\"+\n",
       "\"            if (this.tagName.toLowerCase().startsWith(\\\"pd_\\\")){\\n\"+\n",
       "\"                pd_elements.push($(this).clone());\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        if (!targetNode.hasClass(\\\"use_stream_output\\\")){\\n\"+\n",
       "\"            targetNode.text(contents);\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            var consoleNode = targetNode.children(\\\"div.consoleOutput\\\");\\n\"+\n",
       "\"            if (consoleNode.length == 0){\\n\"+\n",
       "\"                consoleNode = targetNode.append('<div class=\\\"consoleOutput\\\"></div>').children(\\\"div.consoleOutput\\\");\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            var existing = consoleNode.text();\\n\"+\n",
       "\"            if (existing != \\\"\\\"){\\n\"+\n",
       "\"                contents = existing + \\\"\\\\n\\\" + contents;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            consoleNode.html('<pre style=\\\"max-height: 300px;border: 1px lightgray solid;margin-top: 20px;\\\">' + contents + \\\"</pre>\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (pd_elements.length > 0 ){\\n\"+\n",
       "\"            targetNode.append(pd_elements);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    function setHTML(targetNode, contents, pdCtl = null, userCtl = null){\\n\"+\n",
       "\"        var pd_elements = []\\n\"+\n",
       "\"        targetNode.children().each(function(){\\n\"+\n",
       "\"            var eltName = this.tagName.toLowerCase();\\n\"+\n",
       "\"            if (eltName.startsWith(\\\"pd_\\\") || (eltName == \\\"div\\\" && this.classList.contains(\\\"consoleOutput\\\")) ){\\n\"+\n",
       "\"                pd_elements.push($(this).clone());\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        targetNode.html(\\\"<div pd_stop_propagation style='height:100%;'>\\\" + contents + \\\"</div>\\\");\\n\"+\n",
       "\"        if (pd_elements.length > 0 ){\\n\"+\n",
       "\"            targetNode.append(pd_elements);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    function send_input_reply(cb, cmd, pd_controls){\\n\"+\n",
       "\"        if (cmd == 'c' || cmd == 'continue' || cmd.startsWith(\\\"$$\\\")){\\n\"+\n",
       "\"            cb = null;\\n\"+\n",
       "\"            pixiedust.input_reply_queue.queue = [];\\n\"+\n",
       "\"            pixiedust.input_reply_queue.callbacks = {};\\n\"+\n",
       "\"            $(\\\"#debugger_container_\\\" + pd_controls.prefix).hide();\\n\"+\n",
       "\"            if (cmd.startsWith(\\\"$$\\\")){\\n\"+\n",
       "\"                cmd = cmd.substring(2);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else if (cmd == 'no_op'){\\n\"+\n",
       "\"            cb = null;\\n\"+\n",
       "\"            cmd = null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (cb && $targetDivId == \\\"debugger_refresh\\\"){\\n\"+\n",
       "\"            cb.refreshDebugger = true;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        pixiedust.input_reply_queue.inflight = cb;\\n\"+\n",
       "\"        if (cmd){\\n\"+\n",
       "\"            var prolog = cb ? \\\"print('\\\" + pixiedust.input_reply_queue.registerCallback(cb) + \\\"');;\\\" : \\\"\\\";\\n\"+\n",
       "\"            IPython.notebook.session.kernel.send_input_reply( prolog + cmd );\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var cellId = options.cell_id || \\\"\\\";\\n\"+\n",
       "\"    var curCell = pixiedust.getCell(cellId);\\n\"+\n",
       "\"    console.log(\\\"curCell\\\",curCell);\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var callbacks = {\\n\"+\n",
       "\"        shell : {\\n\"+\n",
       "\"            reply : function(){\\n\"+\n",
       "\"                if ( !callbacks.response ){\\n\"+\n",
       "\"                    var targetNodeUpdated = false;\\n\"+\n",
       "\"                    if (!user_controls.partialUpdate){\\n\"+\n",
       "\"                        targetNodeUpdated = setHTML(getTargetNode(), \\\"\\\",pd_controls, user_controls);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                        user_controls.onDisplayDone(getTargetNode(), targetNodeUpdated);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            },\\n\"+\n",
       "\"            payload : {\\n\"+\n",
       "\"                set_next_input : function(payload){\\n\"+\n",
       "\"                    if (curCell){\\n\"+\n",
       "\"                        curCell._handle_set_next_input(payload);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        iopub:{\\n\"+\n",
       "\"            output:function(msg){\\n\"+\n",
       "\"                if (curCell && !$targetDivId && getTargetNode().length == 0){\\n\"+\n",
       "\"                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                    return;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                callbacks.response = true;\\n\"+\n",
       "\"                console.log(\\\"msg\\\", msg);\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                if (cellId == \\\"\\\"){\\n\"+\n",
       "\"                    if (curCell){\\n\"+\n",
       "\"                        curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                        curCell.output_area.outputs=[];\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        console.log(\\\"Could not find current cell\\\");\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    return;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                var msg_type=msg.header.msg_type;\\n\"+\n",
       "\"                var content = msg.content;\\n\"+\n",
       "\"                var targetNodeUpdated = false;\\n\"+\n",
       "\"                if(msg_type===\\\"stream\\\"){\\n\"+\n",
       "\"                    var reply_callbacks = pixiedust.input_reply_queue.parseCallback(content);\\n\"+\n",
       "\"                    if (reply_callbacks && reply_callbacks != callbacks){\\n\"+\n",
       "\"                        if (reply_callbacks.iopub){\\n\"+\n",
       "\"                            reply_callbacks.iopub.output(msg);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        return;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    var useHTML = false;\\n\"+\n",
       "\"                    var process_output = getScriptOfType($(\\\"#\\\" + $targetDivId), \\\"process_output\\\");\\n\"+\n",
       "\"                    if (process_output){\\n\"+\n",
       "\"                        try{\\n\"+\n",
       "\"                            content.text = new Function('output', process_output)(content.text);\\n\"+\n",
       "\"                            useHTML = true;\\n\"+\n",
       "\"                        }catch(e){\\n\"+\n",
       "\"                            console.log(\\\"Error while invoking post output function\\\", e, content.text, process_output);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (user_controls.onSuccess){\\n\"+\n",
       "\"                        user_controls.onSuccess(content.text);\\n\"+\n",
       "\"                    }else{\\n\"+\n",
       "\"                        fn = useHTML?setHTML:setText;\\n\"+\n",
       "\"                        targetNodeUpdated = fn(getTargetNode(), content.text, pd_controls, user_controls);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else if (msg_type===\\\"display_data\\\" || msg_type===\\\"execute_result\\\"){\\n\"+\n",
       "\"                    var html=null;\\n\"+\n",
       "\"                    if (!!content.data[\\\"text/html\\\"]){\\n\"+\n",
       "\"                        html=content.data[\\\"text/html\\\"];\\n\"+\n",
       "\"                    }else if (!!content.data[\\\"image/png\\\"]){\\n\"+\n",
       "\"                        html=html||\\\"\\\";\\n\"+\n",
       "\"                        html+=\\\"<img src='data:image/png;base64,\\\" +content.data[\\\"image/png\\\"]+\\\"'></img>\\\";\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                                                    \\n\"+\n",
       "\"                    if (!!content.data[\\\"application/javascript\\\"]){\\n\"+\n",
       "\"                        try {\\n\"+\n",
       "\"                            eval(content.data[\\\"application/javascript\\\"]);\\n\"+\n",
       "\"                        } catch(err) {\\n\"+\n",
       "\"                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\\n\"+\n",
       "\"                        }                        \\n\"+\n",
       "\"                        return;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    if (html){\\n\"+\n",
       "\"                        try{\\n\"+\n",
       "\"                            if (user_controls.onSuccess){\\n\"+\n",
       "\"                                user_controls.onSuccess(html);\\n\"+\n",
       "\"                            }else{\\n\"+\n",
       "\"                                targetNodeUpdated = setHTML(getTargetNode(), html, pd_controls, user_controls);\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                            if (content.metadata && content.metadata.pixieapp_metadata){\\n\"+\n",
       "\"                                \\n\"+\n",
       "\"                                if (curCell){\\n\"+\n",
       "\"                                    curCell._metadata.pixiedust.pixieapp = content.metadata.pixieapp_metadata;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                                \\n\"+\n",
       "\"                            }                            \\n\"+\n",
       "\"                        }catch(e){\\n\"+\n",
       "\"                            console.log(\\\"Invalid html output\\\", e, html);\\n\"+\n",
       "\"                            targetNodeUpdated = setHTML(getTargetNode(),  \\\"Invalid html output: \\\" + e.message + \\\"<pre>\\\" \\n\"+\n",
       "\"                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\\\"/g,'&quot;') + \\\"<pre>\\\",\\n\"+\n",
       "\"                                pd_controls, user_controls);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (callbacks.options && callbacks.options.nostore_delaysave){\\n\"+\n",
       "\"                            setTimeout(function(){\\n\"+\n",
       "\"                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\\n\"+\n",
       "\"                            }, 1000);\\n\"+\n",
       "\"                        }else{\\n\"+\n",
       "\"                            pixiedust.saveOutputInCell(curCell, content, html, msg_type);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else if (msg_type === \\\"error\\\") {\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    require(['base/js/utils'], function(utils) {\\n\"+\n",
       "\"                        var tb = content.traceback;\\n\"+\n",
       "\"                        console.log(\\\"tb\\\",tb);\\n\"+\n",
       "\"                        if (tb && tb.length>0){\\n\"+\n",
       "\"                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\\\\\n';},\\\"\\\");\\n\"+\n",
       "\"                            console.log(\\\"data\\\",data);\\n\"+\n",
       "\"                            data = utils.fixConsole(data);\\n\"+\n",
       "\"                            data = utils.fixCarriageReturn(data);\\n\"+\n",
       "\"                            data = utils.autoLinkUrls(data);\\n\"+\n",
       "\"                            if (user_controls.onError){\\n\"+\n",
       "\"                                user_controls.onError(data);\\n\"+\n",
       "\"                            }else{\\n\"+\n",
       "\"                                var debugger_html = '<button type=\\\"submit\\\" pd_options=\\\"new_parent_prefix=false\\\" pd_target=\\\"' + \\n\"+\n",
       "\"                                getTargetNodeId() + '\\\" pd_app=\\\"pixiedust.apps.debugger.PixieDebugger\\\">Post Mortem</button>' +\\n\"+\n",
       "\"                                '<span>&nbsp;&nbsp;</span>' +\\n\"+\n",
       "\"                                '<button type=\\\"submit\\\" pd_options=\\\"new_parent_prefix=false;debug_route=true\\\" pd_target=\\\"' + \\n\"+\n",
       "\"                                getTargetNodeId() + '\\\" pd_app=\\\"pixiedust.apps.debugger.PixieDebugger\\\">Debug Route</button>'\\n\"+\n",
       "\"\\n\"+\n",
       "\"                                targetNodeUpdated = setHTML(\\n\"+\n",
       "\"                                    getTargetNode(), \\n\"+\n",
       "\"                                    debugger_html + \\\"<pre>\\\" + data + '</pre>' + debugger_html, \\n\"+\n",
       "\"                                    pd_controls, \\n\"+\n",
       "\"                                    user_controls\\n\"+\n",
       "\"                                );\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    });\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    callbacks.response = false;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                    user_controls.onDisplayDone(getTargetNode(), targetNodeUpdated);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        input : function(msg){\\n\"+\n",
       "\"            var reply_callbacks = pixiedust.input_reply_queue.inflight;\\n\"+\n",
       "\"            if (!reply_callbacks || reply_callbacks.refreshDebugger){\\n\"+\n",
       "\"                $(\\\"#debugger_container_\\\" + pd_controls.prefix).show();\\n\"+\n",
       "\"                var input_target = \\\"input_reply_\\\" + pd_controls.prefix;\\n\"+\n",
       "\"                var process_output = getScriptOfType($(\\\"#\\\" + input_target), \\\"process_output\\\");\\n\"+\n",
       "\"                if (process_output){\\n\"+\n",
       "\"                    try{\\n\"+\n",
       "\"                        if (reply_callbacks){\\n\"+\n",
       "\"                            reply_callbacks.refreshDebugger = false;\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (!pixiedust.input_reply_queue.inflight){\\n\"+\n",
       "\"                            pixiedust.input_reply_queue.inflight = {};\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        msg.content.prompt = new Function('output', process_output)(msg.content.prompt);\\n\"+\n",
       "\"                        targetNodeUpdated = setHTML(getTargetNode(input_target), msg.content.prompt, pd_controls, user_controls);\\n\"+\n",
       "\"                        if (user_controls.onDisplayDone){\\n\"+\n",
       "\"                            user_controls.onDisplayDone(getTargetNode(input_target), targetNodeUpdated);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }catch(e){\\n\"+\n",
       "\"                        console.log(\\\"Error while invoking post output function\\\", e, msg.content.prompt, process_output);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    console.log(\\\"No element with id input_reply_\\\"+pd_controls.prefix + \\\" found\\\");\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            if (reply_callbacks && reply_callbacks.answer_input_reply){\\n\"+\n",
       "\"                var answer = reply_callbacks.answer_input_reply;\\n\"+\n",
       "\"                reply_callbacks.answer_input_reply = null;\\n\"+\n",
       "\"                send_input_reply(reply_callbacks, answer, pd_controls);\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                var next_input_reply = pixiedust.input_reply_queue.queue.shift();\\n\"+\n",
       "\"                if (next_input_reply && next_input_reply.command == \\\"no_op_delay\\\"){\\n\"+\n",
       "\"                    next_input_reply = pixiedust.input_reply_queue.queue.shift();\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                if (next_input_reply){\\n\"+\n",
       "\"                    send_input_reply(next_input_reply.callbacks, next_input_reply.command, pd_controls);\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    pixiedust.input_reply_queue.inflight = null;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            console.log(\\\"Handling input msg request: \\\", msg);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\\n\"+\n",
       "\"    \\n\"+\n",
       "\"        var command = user_controls.script || pd_controls.command.replace(\\\"cellId\\\",cellId);\\n\"+\n",
       "\"        if ( !user_controls.script){\\n\"+\n",
       "\"            function addOptions(options, override=true, ignoreKeys=[]){\\n\"+\n",
       "\"                function getStringRep(v) {\\n\"+\n",
       "\"                    return \\\"'\\\" + v + \\\"'\\\";\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                for (var key in (options||{})){\\n\"+\n",
       "\"                    if (ignoreKeys.indexOf(key)>=0){\\n\"+\n",
       "\"                        continue;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    var value = options[key];\\n\"+\n",
       "\"                    var hasValue = value != null && typeof value !== 'undefined' && value !== '';\\n\"+\n",
       "\"                    var replaceValue = hasValue ? (key+\\\"=\\\" + getStringRep(value) ) : \\\"\\\";\\n\"+\n",
       "\"                    var pattern = (hasValue?\\\"\\\":\\\",\\\")+\\\"\\\\\\\\s*\\\" + key + \\\"\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"                    var rpattern=new RegExp(pattern);\\n\"+\n",
       "\"                    var n = command.search(rpattern);\\n\"+\n",
       "\"                    if ( n >= 0 ){\\n\"+\n",
       "\"                        if (override){\\n\"+\n",
       "\"                            command = command.replace(rpattern, replaceValue);\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }else if (hasValue){\\n\"+\n",
       "\"                        var n = command.lastIndexOf(\\\")\\\");\\n\"+\n",
       "\"                        command = [command.slice(0, n), (command[n-1]==\\\"(\\\"? \\\"\\\":\\\",\\\") + replaceValue, command.slice(n)].join('')\\n\"+\n",
       "\"                    }        \\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            if(typeof cellMetadata != \\\"undefined\\\" && cellMetadata.displayParams){\\n\"+\n",
       "\"                addOptions(cellMetadata.displayParams);\\n\"+\n",
       "\"                addOptions({\\\"showchrome\\\":\\\"true\\\"});\\n\"+\n",
       "\"            }else if (curCell && curCell._metadata.pixiedust ){\\n\"+\n",
       "\"                if (!pd_controls.avoidMetadata){\\n\"+\n",
       "\"                    ignoreKeys = pd_controls.options.nostore_pixieapp?[\\\"handlerId\\\"]:[];\\n\"+\n",
       "\"                    if (pd_controls.override_keys){\\n\"+\n",
       "\"                        Array.prototype.push.apply(ignoreKeys,pd_controls.override_keys);\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pd_controls.include_keys || []\\n\"+\n",
       "\"                    addOptions(curCell._metadata.pixiedust.displayParams || {}, pd_controls.useCellMetadata, ignoreKeys);\\n\"+\n",
       "\"                }else{\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    var includeKeys = pd_controls.include_keys || [];\\n\"+\n",
       "\"                    var includeOptions = {};\\n\"+\n",
       "\"                    for (var key in (curCell._metadata.pixiedust.displayParams||{})){\\n\"+\n",
       "\"                        if (includeKeys.indexOf(key) > -1 || !(key in pd_controls.options)){\\n\"+\n",
       "\"                            includeOptions[key] = curCell._metadata.pixiedust.displayParams[key];\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    addOptions(includeOptions);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            addOptions(user_controls.options||{});\\n\"+\n",
       "\"            var pattern = \\\"\\\\\\\\w*\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"            var rpattern=new RegExp(pattern,\\\"g\\\");\\n\"+\n",
       "\"            var n = command.match(rpattern);\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var org_params = {}\\n\"+\n",
       "\"            for (var i=0; i<n.length;i++){\\n\"+\n",
       "\"                var parts = n[i].split(\\\"=\\\")\\n\"+\n",
       "\"                if (parts[0].trim() == \\\"org_params\\\"){\\n\"+\n",
       "\"                    var value = parts[1].trim()\\n\"+\n",
       "\"                    var values = value.substring(1,value.length-1).split(\\\",\\\");\\n\"+\n",
       "\"                    for (var p in values){\\n\"+\n",
       "\"                        org_params[values[p].trim()] = true;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    break;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            var displayParams={}\\n\"+\n",
       "\"            for (var i = 0; i < n.length; i++){\\n\"+\n",
       "\"                var parts=n[i].split(\\\"=\\\");\\n\"+\n",
       "\"                var key = parts[0].trim();\\n\"+\n",
       "\"                var value = parts[1].trim()\\n\"+\n",
       "\"                if (!key.startsWith(\\\"nostore_\\\") && key != \\\"showchrome\\\" && key != \\\"prefix\\\" && key != \\\"cell_id\\\" && key != \\\"org_params\\\" && !!!org_params[key]){\\n\"+\n",
       "\"                    displayParams[key] = value.substring(1,value.length-1);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"\\n\"+\n",
       "\"            \\n\"+\n",
       "\"\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            var rpattern=/,(.*?)='(.*?)'/g;\\n\"+\n",
       "\"            var newOptions = {};\\n\"+\n",
       "\"            for (var match = rpattern.exec(command); match != null; match = rpattern.exec(command)){\\n\"+\n",
       "\"                newOptions[match[1]] = match[2];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            pd_controls.options = newOptions;\\n\"+\n",
       "\"            pd_controls.command = command;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if(curCell&&curCell.output_area){ \\n\"+\n",
       "\"            if ( !user_controls.nostoreMedatadata ){\\n\"+\n",
       "\"                curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\\n\"+\n",
       "\"                curCell._metadata.pixiedust.displayParams=displayParams\\n\"+\n",
       "\"                curCell.output_area.outputs=[];\\n\"+\n",
       "\"                var old_msg_id = curCell.last_msg_id;\\n\"+\n",
       "\"                if (old_msg_id) {\\n\"+\n",
       "\"                    curCell.kernel.clear_callbacks_for_msg(old_msg_id);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            console.log(\\\"couldn't find the cell\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        $('#wrapperJS' + pd_prefix).html(\\\"\\\")\\n\"+\n",
       "\"        if (!getTargetNode().hasClass( \\\"no_loading_msg\\\" )){\\n\"+\n",
       "\"            setHTML(getTargetNode(), \\n\"+\n",
       "\"                '<div style=\\\"width:100px;height:60px;left:47%;position:relative\\\">'+\\n\"+\n",
       "\"                    '<i class=\\\"fa fa-circle-o-notch fa-spin\\\" style=\\\"font-size:48px\\\"></i>'+\\n\"+\n",
       "\"                '</div>'+\\n\"+\n",
       "\"                '<div style=\\\"text-align:center\\\">' +\\n\"+\n",
       "\"                    (getTargetNode().attr(\\\"pd_loading_msg\\\") || \\\"Loading your data. Please wait...\\\") +\\n\"+\n",
       "\"                '</div>',\\n\"+\n",
       "\"                pd_controls, user_controls\\n\"+\n",
       "\"            );\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        if (curCell && checkRootInit() && curCell._metadata.pixiedust && curCell._metadata.pixiedust.pixieapp){\\n\"+\n",
       "\"            pd_controls.entity = pd_controls.entity || []\\n\"+\n",
       "\"            if (pd_controls.entity.length == 1 && (pd_controls.options.nostore_pixieapp == pd_controls.entity[0])){\\n\"+\n",
       "\"                console.log(\\\"Initializing pixieapp metadata\\\");\\n\"+\n",
       "\"                command = pd_controls.options.nostore_pixieapp + \\\".append_metadata(\\\" + \\n\"+\n",
       "\"                JSON.stringify(curCell._metadata.pixiedust.pixieapp) + \\\")\\\\n\\\" + command\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (user_controls.send_input_reply){\\n\"+\n",
       "\"            command = user_controls.send_input_reply;\\n\"+\n",
       "\"            callbacks.answer_input_reply = user_controls.answer_input_reply;\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            pixiedust.input_reply_queue.queue = pixiedust.input_reply_queue.queue.filter(\\n\"+\n",
       "\"                function(item){\\n\"+\n",
       "\"                    return item.command!='no_op';\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            );\\n\"+\n",
       "\"            if (pixiedust.input_reply_queue.inflight || pixiedust.input_reply_queue.queue.length > 0 || command == \\\"no_op_delay\\\"){\\n\"+\n",
       "\"                pixiedust.input_reply_queue.queue.push({\\\"command\\\":command, \\\"callbacks\\\":callbacks});\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                send_input_reply(callbacks, command, pd_controls);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            if (pixiedust.input_reply_queue.inflight){\\n\"+\n",
       "\"                console.log(\\\"Warning: A kernel request is triggered but not all the reply callback where consummed\\\", command);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            command = command.trim();\\n\"+\n",
       "\"            IPython.notebook.session.kernel.execute(command, callbacks, {\\n\"+\n",
       "\"                silent:true,store_history:false,stop_on_error:true,allow_stdin : true\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        \\n\"+\n",
       "\"\\n\"+\n",
       "\"        console.log(\\\"Running command2:\\\\n\\\",command);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"}()\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        executeInDialog:function(pd_controls, user_controls){\\n\"+\n",
       "\"            pd_controls = pd_controls || {};\\n\"+\n",
       "\"            user_controls = user_controls || {\\\"options\\\":{}};\\n\"+\n",
       "\"            var displayOptions = $.extend({}, pd_controls.options || {}, user_controls.options || {} );\\n\"+\n",
       "\"            var global={};\\n\"+\n",
       "\"            var sourceDivId = displayOptions.targetDivId;\\n\"+\n",
       "\"            require(['base/js/dialog'],function(dialog){\\n\"+\n",
       "\"                var modal = dialog.modal;\\n\"+\n",
       "\"                var attr_pd_ctrl = JSON.stringify(pd_controls).trim()\\n\"+\n",
       "\"                    .replace(/&/g, '&amp;')\\n\"+\n",
       "\"                    .replace(/'/g, '&apos;')\\n\"+\n",
       "\"                    .replace(/\\\"/g, '&quot;')\\n\"+\n",
       "\"                    .replace(/</g, '&lt;')\\n\"+\n",
       "\"                    .replace(/>/g, '&gt;');\\n\"+\n",
       "\"                var dialogRoot = \\\"dialog\\\" + pd_controls.prefix + \\\"root\\\";\\n\"+\n",
       "\"                var options = {\\n\"+\n",
       "\"                    title: \\\"PixieDust: \\\" + (displayOptions.title || \\\"Dialog\\\"),\\n\"+\n",
       "\"                    body: '<div id=\\\"' + dialogRoot + '\\\" pixiedust=\\\"' + attr_pd_ctrl + '\\\" class=\\\"pixiedust\\\"></div>',\\n\"+\n",
       "\"                    sanitize:false,\\n\"+\n",
       "\"                    notebook: IPython.notebook,\\n\"+\n",
       "\"                    keyboard_manager: IPython.notebook.keyboard_manager,\\n\"+\n",
       "\"                    maximize_modal: (displayOptions.maximize === \\\"true\\\"),\\n\"+\n",
       "\"                    custom_class: (displayOptions.customClass || ''),\\n\"+\n",
       "\"                    hide_header: (displayOptions.hideHeader === 'true'),\\n\"+\n",
       "\"                    hide_footer: (displayOptions.showFooter === undefined || displayOptions.showFooter !== 'true'),\\n\"+\n",
       "\"                    buttons: {\\n\"+\n",
       "\"                        OK: {\\n\"+\n",
       "\"                            class : \\\"btn-primary btn-ok\\\",\\n\"+\n",
       "\"                            click: function() {\\n\"+\n",
       "\"                                var dlg = $(\\\"#\\\" + dialogRoot + \\\" > pd_dialog\\\");\\n\"+\n",
       "\"                                try{\\n\"+\n",
       "\"                                    pixiedust.dialogRoot = null;\\n\"+\n",
       "\"                                    $(document).trigger('pd_event', {targetDivId: sourceDivId || dialogRoot, entity: pd_controls.options.nostore_pixieapp});\\n\"+\n",
       "\"                                    return new Function('global', 'modal_obj', dlg.find(\\\"> pd_ok\\\").text().trim())(global, modal_obj);\\n\"+\n",
       "\"                                }catch(e){\\n\"+\n",
       "\"                                    console.error(e);\\n\"+\n",
       "\"                                    return false;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        },\\n\"+\n",
       "\"                        Cancel: {\\n\"+\n",
       "\"                            class : \\\"btn-cancel\\\",\\n\"+\n",
       "\"                            click: function(){\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                function resizeDialog() {\\n\"+\n",
       "\"                    global.modalBodyStyle = $('.pixiedust .modal-body').attr('style');\\n\"+\n",
       "\"                    global.modalFooterStyle = $('.pixiedust .modal-footer').attr('style');\\n\"+\n",
       "\"                    $('.pixiedust .modal-body').attr('style', global.modalBodyStyle ? global.modalBodyStyle + ';padding:5px 20px !important;' : 'padding:5px 20px !important;');\\n\"+\n",
       "\"                    if (options.hide_footer){\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').attr('style', 'display:none !important;');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    $(\\\".pixiedust .modal-footer\\\").find(\\\"> button:contains('OK')\\\").attr(\\\"pd_options\\\", \\\"toto=true\\\");\\n\"+\n",
       "\"                    if (options.hide_header) {\\n\"+\n",
       "\"                        global.modalHeaderStyle = $('.pixiedust .modal-header').attr('style');\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').attr('style', 'display:none !important;');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                function resetDialog() {\\n\"+\n",
       "\"                    if (global.modalBodyStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-body').attr('style', global.modalBodyStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-body').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (global.modalFooterStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').attr('style', global.modalFooterStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-footer').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    if (global.modalHeaderStyle) {\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').attr('style', global.modalHeaderStyle);\\n\"+\n",
       "\"                    } else {\\n\"+\n",
       "\"                        $('.pixiedust .modal-header').removeAttr('style');\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                };\\n\"+\n",
       "\"\\n\"+\n",
       "\"                var modal_obj = modal(options);\\n\"+\n",
       "\"                modal_obj.addClass('pixiedust pixiedust-app ' + options.custom_class);\\n\"+\n",
       "\"                if (options.maximize_modal) {\\n\"+\n",
       "\"                    modal_obj.addClass('pixiedust pixiedust-app pixiedust-maximize ' + options.custom_class);\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                modal_obj.on('shown.bs.modal', function(){\\n\"+\n",
       "\"                    resizeDialog();\\n\"+\n",
       "\"                    var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\\n\"+\n",
       "\"                    if( isFF && options.keyboard_manager){\\n\"+\n",
       "\"                        \\n\"+\n",
       "\"                        var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\\n\"+\n",
       "\"                        global.KMEnableProto = KeyboardManager.prototype.enable;\\n\"+\n",
       "\"                        KeyboardManager.prototype.enable = function () {\\n\"+\n",
       "\"                            this.enabled = false;\\n\"+\n",
       "\"                        };\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    IPython.keyboard_manager.register_events(modal_obj);\\n\"+\n",
       "\"                    user_controls.options.targetDivId = user_controls.targetDivId = dialogRoot;\\n\"+\n",
       "\"                    if ( user_controls.options.dialog == 'true'){\\n\"+\n",
       "\"                        user_controls.onDisplayDone = function(){\\n\"+\n",
       "\"                            var dlg = $(\\\"#\\\" + dialogRoot + \\\" > pd_dialog\\\")\\n\"+\n",
       "\"                            try{\\n\"+\n",
       "\"                                new Function('global', 'modal_obj', dlg.find(\\\"> pd_onload\\\").text().trim())(global, modal_obj);\\n\"+\n",
       "\"                            }catch(e){\\n\"+\n",
       "\"                                console.error(e);\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pixiedust.dialogRoot = dialogRoot;\\n\"+\n",
       "\"                    pixiedust.executeDisplay(pd_controls, user_controls);\\n\"+\n",
       "\"                });\\n\"+\n",
       "\"                modal_obj.on(\\\"hidden.bs.modal\\\", function () {\\n\"+\n",
       "\"                    resetDialog();\\n\"+\n",
       "\"                    if ( global.KMEnableProto ){\\n\"+\n",
       "\"                        var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\\n\"+\n",
       "\"                        KeyboardManager.prototype.enable = global.KMEnableProto;\\n\"+\n",
       "\"                        delete global.KMEnableProto;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    pixiedust.dialogRoot = null;\\n\"+\n",
       "\"                });\\n\"+\n",
       "\"            })\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        sendEvent: function(payload, divId){\\n\"+\n",
       "\"            payload = payload || {};\\n\"+\n",
       "\"            var targetElement = event.target || event.srcElement;\\n\"+\n",
       "\"            divId = divId || $(targetElement).uniqueId().attr('id');\\n\"+\n",
       "\"            payload.targetDivId = divId;\\n\"+\n",
       "\"            $(document).trigger('pd_event', payload);\\n\"+\n",
       "\"        },\\n\"+\n",
       "\"        saveOutputInCell: function(curCell, content, html, msg_type){\\n\"+\n",
       "\"            if(curCell && curCell.output_area && curCell.output_area.outputs){\\n\"+\n",
       "\"                var data = JSON.parse(JSON.stringify(content.data));\\n\"+\n",
       "\"                if(!!data[\\\"text/html\\\"])data[\\\"text/html\\\"]=html;\\n\"+\n",
       "\"                function savedData(data){\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    var markup='<style type=\\\"text/css\\\">.pd_warning{display:none;}</style>';\\n\"+\n",
       "\"                    markup+='<div class=\\\"pd_warning\\\"><em>Hey, there\\\\'s something awesome here! To see it, open this notebook outside GitHub, in a viewer like Jupyter</em></div>';\\n\"+\n",
       "\"                    nodes = $.parseHTML(data[\\\"text/html\\\"], null, true);\\n\"+\n",
       "\"                    var s = $(nodes).wrap(\\\"<div>\\\").parent().find(\\\".pd_save\\\").not(\\\".pd_save .pd_save\\\");\\n\"+\n",
       "\"                    s.each(function(){\\n\"+\n",
       "\"                        var found = false;\\n\"+\n",
       "\"                        if ( $(this).attr(\\\"id\\\") ){\\n\"+\n",
       "\"                            var n = $(\\\"#\\\" + $(this).attr(\\\"id\\\"));\\n\"+\n",
       "\"                            if (n.length>0){\\n\"+\n",
       "\"                                found=true;\\n\"+\n",
       "\"                                n.each(function(){\\n\"+\n",
       "\"                                    $(this).addClass(\\\"is-viewer-good\\\");\\n\"+\n",
       "\"                                });\\n\"+\n",
       "\"                                markup+=n.wrap(\\\"<div>\\\").parent().html();\\n\"+\n",
       "\"                            }\\n\"+\n",
       "\"                        }else{\\n\"+\n",
       "\"                            $(this).addClass(\\\"is-viewer-good\\\");\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                        if (!found){\\n\"+\n",
       "\"                            markup+=$(this).parent().html();\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    });\\n\"+\n",
       "\"                    data[\\\"text/html\\\"] = markup;\\n\"+\n",
       "\"                    return data;\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                curCell.output_area.outputs = [{\\n\"+\n",
       "\"                    \\\"data\\\": savedData(data),\\\"metadata\\\":content.metadata,\\\"output_type\\\":msg_type\\n\"+\n",
       "\"                }];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"})();\\n\"+\n",
       "\"\\n\"+\n",
       "\"function resolveScriptMacros(script){\\n\"+\n",
       "\"    script = script && script.replace(/\\\\$val\\\\(\\\\\\\"?(\\\\w*)\\\\\\\"?\\\\)/g, function(a,b){\\n\"+\n",
       "\"        var n = $(\\\"#\\\" + b );\\n\"+\n",
       "\"        var v = null;\\n\"+\n",
       "\"        if (n.length > 0){\\n\"+\n",
       "\"            if (n.is(':checkbox')){\\n\"+\n",
       "\"                v = n.is(':checked').toString();\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                v = $(\\\"#\\\" + b ).val() || $(\\\"#\\\" + b ).text();\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\" && window[b] && typeof window[b] === \\\"function\\\"){\\n\"+\n",
       "\"            v = window[b]();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\" && pixiedust[b] && typeof pixiedust[b] === \\\"function\\\"){\\n\"+\n",
       "\"            v = pixiedust[b]();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (!v && v!==\\\"\\\"){\\n\"+\n",
       "\"            console.log(\\\"Warning: Unable to resolve value for element \\\", b);\\n\"+\n",
       "\"            return a;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (typeof v === \\\"object\\\"){\\n\"+\n",
       "\"            return JSON.stringify(v)\\n\"+\n",
       "\"                .split('\\\\\\\\').join('\\\\\\\\\\\\\\\\')\\n\"+\n",
       "\"                .split(\\\"'''\\\").join(\\\"\\\\\\\\'\\\\\\\\'\\\\\\\\'\\\")\\n\"+\n",
       "\"                .split('\\\"\\\"\\\"').join('\\\\\\\\\\\"\\\\\\\\\\\"\\\\\\\\\\\"')\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return v.split('\\\"').join('&quot;').split('\\\\n').join('\\\\\\\\n');\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    return script;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getParentScript(element){\\n\"+\n",
       "\"    var scripts = [];\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $(element).parents(\\\"[pd_script]\\\").each(function(){\\n\"+\n",
       "\"        scripts.unshift(this.getAttribute(\\\"pd_script\\\"));\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var script = \\\"\\\";\\n\"+\n",
       "\"    $.each( scripts, function(index, value){\\n\"+\n",
       "\"        if (value){\\n\"+\n",
       "\"            script += \\\"\\\\n\\\" + value;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    return script;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function preRun(element){\\n\"+\n",
       "\"    var preRunCode = getScriptOfType(element, \\\"preRun\\\");\\n\"+\n",
       "\"    if (!preRunCode ){\\n\"+\n",
       "\"        return true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return new Function(preRunCode.trim())();\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getScriptOfType(element, scriptType){\\n\"+\n",
       "\"    if (!element.jquery){\\n\"+\n",
       "\"        element = $(element);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var code = null;\\n\"+\n",
       "\"    element.find(\\\"> pd_script\\\").each(function(){\\n\"+\n",
       "\"        var type = this.getAttribute(\\\"type\\\");\\n\"+\n",
       "\"        if (type == scriptType){\\n\"+\n",
       "\"            code = $(this).text();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    if (code){\\n\"+\n",
       "\"        return code.trim();\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return code;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function addOptions(command, options, override=true){\\n\"+\n",
       "\"    function getStringRep(v) {\\n\"+\n",
       "\"        if (typeof v === 'string' || v instanceof String){\\n\"+\n",
       "\"            v = v.replace(/'/g,\\\"\\\\\\\\\\\\'\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return \\\"'\\\" + v + \\\"'\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    for (var key in (options||{})){\\n\"+\n",
       "\"        var value = options[key];\\n\"+\n",
       "\"        var hasValue = value != null && typeof value !== 'undefined' && value !== '';\\n\"+\n",
       "\"        var replaceValue = hasValue ? (key+\\\"=\\\" + getStringRep(value) ) : \\\"\\\";\\n\"+\n",
       "\"        var pattern = (hasValue?\\\"\\\":\\\",\\\")+\\\"\\\\\\\\s*\\\" + key + \\\"\\\\\\\\s*=\\\\\\\\s*'(\\\\\\\\\\\\\\\\'|[^'])*'\\\";\\n\"+\n",
       "\"        var rpattern=new RegExp(pattern);\\n\"+\n",
       "\"        var n = command.search(rpattern);\\n\"+\n",
       "\"        if ( n >= 0 ){\\n\"+\n",
       "\"            if (override){\\n\"+\n",
       "\"                command = command.replace(rpattern, replaceValue);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else if (hasValue && command.search(/display\\\\s*\\\\(/) >= 0 ){\\n\"+\n",
       "\"            var n = command.lastIndexOf(\\\")\\\");\\n\"+\n",
       "\"            command = [command.slice(0, n), (command[n-1]==\\\"(\\\"? \\\"\\\":\\\",\\\") + replaceValue, command.slice(n)].join('')\\n\"+\n",
       "\"        }        \\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return command;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function computeGeometry(element, execInfo){\\n\"+\n",
       "\"        var parentStyles = [];\\n\"+\n",
       "\"    var hiddenBlockStyle = 'visibility: hidden !important; display: block !important;';\\n\"+\n",
       "\"    var tDiv = $(\\\"#\\\" + execInfo.targetDivId);\\n\"+\n",
       "\"    var tDivParents = tDiv.parents().addBack().filter(':hidden');\\n\"+\n",
       "\"    tDivParents.each(function() {\\n\"+\n",
       "\"        var currentStyle = $(this).attr('style');\\n\"+\n",
       "\"        parentStyles.push(currentStyle);\\n\"+\n",
       "\"        $(this).attr('style', currentStyle ? currentStyle + ';' + hiddenBlockStyle : hiddenBlockStyle);\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"\\n\"+\n",
       "\"        w = tDiv.width()\\n\"+\n",
       "\"    if (w) {\\n\"+\n",
       "\"        execInfo.options.nostore_cw= w;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if ($(element).parents(\\\".modal-dialog\\\").length > 0 ) {\\n\"+\n",
       "\"        h = tDiv.height()\\n\"+\n",
       "\"        if (h) {\\n\"+\n",
       "\"            execInfo.options.nostore_ch = h-10;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"        tDivParents.each(function(i) {\\n\"+\n",
       "\"        if (parentStyles[i] === undefined) {\\n\"+\n",
       "\"            $(this).removeAttr('style');\\n\"+\n",
       "\"        } else {\\n\"+\n",
       "\"            $(this).attr('style', parentStyles[i]);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readScriptAttribute(element){\\n\"+\n",
       "\"    var retValue = element.getAttribute(\\\"pd_script\\\");\\n\"+\n",
       "\"    var run_raw = false;\\n\"+\n",
       "\"    if (!retValue){\\n\"+\n",
       "\"        $(element).find(\\\"> pd_script\\\").each(function(){\\n\"+\n",
       "\"            var type = this.getAttribute(\\\"type\\\");\\n\"+\n",
       "\"            if (!type || type==\\\"python\\\"){\\n\"+\n",
       "\"                retValue = $(this).text();\\n\"+\n",
       "\"                run_raw = this.hasAttribute(\\\"run_raw\\\");\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        })\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return retValue?{\\\"script\\\":retValue, \\\"run_raw\\\":run_raw}:null;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function getAttribute(element, name, defValue, defValueIfKeyAlone){\\n\"+\n",
       "\"    if (!element.hasAttribute(name)){\\n\"+\n",
       "\"        return defValue;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    retValue = element.getAttribute(name);\\n\"+\n",
       "\"    return retValue || defValueIfKeyAlone;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function convertToBoolean(value, def){\\n\"+\n",
       "\"    if (value === undefined){\\n\"+\n",
       "\"        return def;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (typeof(value) == \\\"string\\\"){\\n\"+\n",
       "\"        return value.toLowerCase() == \\\"true\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return value;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readExecInfo(pd_controls, element, searchParents, fromExecInfo){\\n\"+\n",
       "\"    if (searchParents === null || searchParents === undefined ){\\n\"+\n",
       "\"        searchParents = !element.hasAttribute(\\\"pd_stop_propagation\\\");\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var execInfo = {\\\"options\\\":{}};\\n\"+\n",
       "\"    $.extend(execInfo, fromExecInfo || {});\\n\"+\n",
       "\"    var hasOptions = false;\\n\"+\n",
       "\"    $.each( element.attributes, function(){\\n\"+\n",
       "\"        if (this.name.startsWith(\\\"option_\\\")){\\n\"+\n",
       "\"            hasOptions = true;\\n\"+\n",
       "\"            execInfo.options[this.name.replace(\\\"option_\\\", \\\"\\\")] = this.value || null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"    var pd_options = resolveScriptMacros(element.getAttribute(\\\"pd_options\\\"));\\n\"+\n",
       "\"    if (pd_options){\\n\"+\n",
       "\"        var parts = pd_options.split(\\\";\\\");\\n\"+\n",
       "\"        $.each( parts, function(){\\n\"+\n",
       "\"            var index = this.indexOf(\\\"=\\\");\\n\"+\n",
       "\"            if ( index > 0){\\n\"+\n",
       "\"                hasOptions = true;\\n\"+\n",
       "\"                execInfo.options[this.substring(0, index)] = this.substring(index+1);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $(element).find(\\\"> pd_options\\\").each(function(){\\n\"+\n",
       "\"        try{\\n\"+\n",
       "\"            var options = JSON.parse($(this).text());\\n\"+\n",
       "\"            hasOptions = true;\\n\"+\n",
       "\"            for (var key in options) { \\n\"+\n",
       "\"                execInfo.options[key] = resolveScriptMacros(options[key]); \\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }catch(e){\\n\"+\n",
       "\"            console.log(\\\"Error parsing pd_options, invalid json\\\", e);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    })\\n\"+\n",
       "\"    if (convertToBoolean(execInfo.options.nostore_figureOnly, true)){\\n\"+\n",
       "\"        execInfo.options.nostore_figureOnly = true;\\n\"+\n",
       "\"    }else{\\n\"+\n",
       "\"        delete execInfo.options.nostore_figureOnly;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execInfo.options.targetDivId = execInfo.targetDivId = pd_controls.refreshTarget || element.getAttribute(\\\"pd_target\\\");\\n\"+\n",
       "\"    if (execInfo.options.targetDivId){\\n\"+\n",
       "\"        execInfo.options.no_margin=true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    execInfo.options.widget = element.getAttribute(\\\"pd_widget\\\");\\n\"+\n",
       "\"    execInfo.pixieapp = element.getAttribute(\\\"pd_app\\\");\\n\"+\n",
       "\"    if (execInfo.pixieapp && !execInfo.targetDivId){\\n\"+\n",
       "\"        execInfo.options.targetDivId = execInfo.targetDivId = $(element).uniqueId().attr('id');\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    computeGeometry(element, execInfo);\\n\"+\n",
       "\"\\n\"+\n",
       "\"    scriptAttr = readScriptAttribute(element);\\n\"+\n",
       "\"    if (scriptAttr){\\n\"+\n",
       "\"        execInfo.script = (execInfo.script || \\\"\\\") + \\\"\\\\n\\\" + scriptAttr.script;\\n\"+\n",
       "\"        execInfo.script_run_raw = scriptAttr.run_raw;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execInfo.refresh = execInfo.refresh || (getAttribute(element, \\\"pd_refresh\\\", \\\"false\\\", \\\"true\\\") == 'true');\\n\"+\n",
       "\"    execInfo.norefresh = element.hasAttribute(\\\"pd_norefresh\\\");\\n\"+\n",
       "\"    execInfo.entity = element.hasAttribute(\\\"pd_entity\\\") ? resolveScriptMacros(element.getAttribute(\\\"pd_entity\\\")) || \\\"pixieapp_entity\\\" : null;\\n\"+\n",
       "\"    function applyEntity(c, e, doptions){\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        doptions.prefix = pd_controls.prefix;\\n\"+\n",
       "\"\\n\"+\n",
       "\"        pd_controls.sniffers = pd_controls.sniffers || [];\\n\"+\n",
       "\"        pd_controls.sniffers.forEach(function(sniffer){\\n\"+\n",
       "\"            c = addOptions(c, eval('(' + sniffer + ')'))       \\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        if (!e){\\n\"+\n",
       "\"            return addOptions(c, doptions);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (pd_controls.entity){\\n\"+\n",
       "\"            c = c.replace(pd_controls.entity, pd_controls.entity+ \\\".\\\" + e );\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            c = c.replace(/\\\\((\\\\w*),/, \\\"($1.\\\" + e + \\\",\\\");\\n\"+\n",
       "\"        }        \\n\"+\n",
       "\"        return addOptions(c, doptions);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    var hasRefreshTarget = element.hasAttribute(\\\"pd_refresh\\\") && \\n\"+\n",
       "\"                           element.getAttribute(\\\"pd_refresh\\\") != \\\"true\\\" &&\\n\"+\n",
       "\"                           element.getAttribute(\\\"pd_refresh\\\") != \\\"false\\\";\\n\"+\n",
       "\"    if ( (!hasOptions && (execInfo.refresh || hasRefreshTarget || execInfo.options.widget) && !execInfo.script) \\n\"+\n",
       "\"        || (!execInfo.script && execInfo.pixieapp)){\\n\"+\n",
       "\"        execInfo.script = \\\"#refresh\\\";\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    var dialog = (execInfo.options.dialog == \\\"true\\\");\\n\"+\n",
       "\"    if ( dialog ){\\n\"+\n",
       "\"        execInfo.script = execInfo.script || \\\"#refresh\\\";\\n\"+\n",
       "\"        execInfo.refresh = true;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (execInfo.script){\\n\"+\n",
       "\"        execInfo.script = execInfo.script.trim()\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        var entity = pd_controls.entity;\\n\"+\n",
       "\"        if (!entity){\\n\"+\n",
       "\"            var match = pd_controls.command.match(/display\\\\((\\\\w*),/);\\n\"+\n",
       "\"            if (match){\\n\"+\n",
       "\"                entity = match[1];\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (entity){\\n\"+\n",
       "\"            var prolog = \\\"\\\";\\n\"+\n",
       "\"            if (!execInfo.script_run_raw){\\n\"+\n",
       "\"                console.log(\\\"Inject self with entity\\\", entity);\\n\"+\n",
       "\"                prolog = \\\"from pixiedust.utils.shellAccess import ShellAccess\\\\n\\\"+\\n\"+\n",
       "\"                    \\\"self=ShellAccess['\\\" + entity + \\\"']\\\\n\\\";\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            execInfo.script = prolog +\\n\"+\n",
       "\"                resolveScriptMacros( getParentScript(element) ) + '\\\\n' +\\n\"+\n",
       "\"                resolveScriptMacros(execInfo.script);\\n\"+\n",
       "\"            if ( execInfo.pixieapp){\\n\"+\n",
       "\"                var locOptions = execInfo.options;\\n\"+\n",
       "\"                locOptions.cell_id = pd_controls.options.cell_id;\\n\"+\n",
       "\"                locOptions.prefix = pd_controls.prefix;\\n\"+\n",
       "\"                if (pd_controls.options.nostore_cw){\\n\"+\n",
       "\"                    locOptions.nostore_cw = pd_controls.options.nostore_cw\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                function makePythonStringOrNone(s){\\n\"+\n",
       "\"                    return !s?\\\"None\\\":('\\\"\\\"\\\"' + s + '\\\"\\\"\\\"')\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                function getCellMetadata(){\\n\"+\n",
       "\"                    var cell = pixiedust.getCell(execInfo.options.cell_id);\\n\"+\n",
       "\"                    var retValue = cell?cell._metadata:{};\\n\"+\n",
       "\"                    return JSON.stringify(retValue || {});\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                execInfo.script += \\\"\\\\nfrom pixiedust.display.app.pixieapp import runPixieApp\\\" + \\n\"+\n",
       "\"                    \\\"\\\\ntrue=True\\\\nfalse=False\\\\nnull=None\\\" +\\n\"+\n",
       "\"                    \\\"\\\\nrunPixieApp('\\\" + \\n\"+\n",
       "\"                    execInfo.pixieapp + \\\"', options=\\\" + JSON.stringify(locOptions) \\n\"+\n",
       "\"                    + \\\",parent_command=\\\" + makePythonStringOrNone(applyEntity(pd_controls.command, execInfo.entity, execInfo.options))\\n\"+\n",
       "\"                    + \\\",parent_pixieapp=\\\" + makePythonStringOrNone(pd_controls.options.nostore_pixieapp)\\n\"+\n",
       "\"                    + \\\",cell_metadata=\\\" + getCellMetadata()\\n\"+\n",
       "\"                    + \\\")\\\";\\n\"+\n",
       "\"            }else if ( ( hasOptions || execInfo.refresh || execInfo.entity || execInfo.options.widget) && \\n\"+\n",
       "\"                    !execInfo.norefresh && $(element).children(\\\"target[pd_target]\\\").length == 0){\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                execInfo.script += \\\"\\\\n\\\" + applyEntity(pd_controls.command, execInfo.entity, execInfo.options)\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                \\n\"+\n",
       "\"                execInfo.targetDivId=execInfo.targetDivId || \\\"pixiedust_dummy\\\";\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            console.log(\\\"Unable to extract entity variable from command\\\", pd_controls.command);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (!hasOptions && !execInfo.targetDivId && !execInfo.script){\\n\"+\n",
       "\"        if (!searchParents){\\n\"+\n",
       "\"            return null;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        return element.hasAttribute(\\\"pixiedust\\\")?null:readExecInfo(pd_controls, element.parentElement);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (!execInfo.script){\\n\"+\n",
       "\"        execInfo.script = applyEntity(pd_controls.command, execInfo.entity, execInfo.options);\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    execInfo.nostoreMedatadata = true;\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    if ( pixiedust.dialogRoot ){\\n\"+\n",
       "\"        execInfo.targetDivId = execInfo.targetDivId || pixiedust.dialogRoot;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    if (\\\"send_input_reply\\\" in execInfo.options){\\n\"+\n",
       "\"        execInfo.send_input_reply = execInfo.options[\\\"send_input_reply\\\"];\\n\"+\n",
       "\"        delete execInfo.options[\\\"send_input_reply\\\"];\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (\\\"answer_input_reply\\\" in execInfo.options){\\n\"+\n",
       "\"        execInfo.answer_input_reply = execInfo.options[\\\"answer_input_reply\\\"];\\n\"+\n",
       "\"        delete execInfo.options[\\\"answer_input_reply\\\"];\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    execInfo.execute = function(){\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        if (!preRun(element)){\\n\"+\n",
       "\"            return;\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"\\n\"+\n",
       "\"        pd_controls.sniffers = pd_controls.sniffers || [];\\n\"+\n",
       "\"        pd_controls.sniffers.forEach(function(sniffer){\\n\"+\n",
       "\"            if (this.script){\\n\"+\n",
       "\"                this.script = addOptions(this.script, eval('(' + sniffer + ')'));\\n\"+\n",
       "\"            }else{\\n\"+\n",
       "\"                pd_controls.command = addOptions(pd_controls.command, eval('(' + sniffer + ')'));\\n\"+\n",
       "\"            }    \\n\"+\n",
       "\"        }.bind(this));\\n\"+\n",
       "\"\\n\"+\n",
       "\"        var process_output = getScriptOfType(element, \\\"process_output\\\");\\n\"+\n",
       "\"        if (!process_output){\\n\"+\n",
       "\"            process_output = getScriptOfType($(\\\"#\\\" + this.targetDivId), \\\"process_output\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if (process_output){\\n\"+\n",
       "\"            this.process_output = function(output){\\n\"+\n",
       "\"                new Function('output', process_output)(output);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        if ( this.options.dialog == 'true' ){\\n\"+\n",
       "\"            pixiedust.executeInDialog(pd_controls, this);\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            pixiedust.executeDisplay(pd_controls, this);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var refreshTarget = element.getAttribute(\\\"pd_refresh\\\");\\n\"+\n",
       "\"    if (refreshTarget){\\n\"+\n",
       "\"        if (execInfo.targetDivId == \\\"pixiedust_dummy\\\"){\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            execInfo.targetDivId = \\\"pixiedust_dummy2\\\";\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        var retQueue = [execInfo];\\n\"+\n",
       "\"        var targets = refreshTarget.split(\\\",\\\");\\n\"+\n",
       "\"        $.each( targets, function(index){\\n\"+\n",
       "\"            var node = $(\\\"#\\\" + this);\\n\"+\n",
       "\"            if (node.length){\\n\"+\n",
       "\"                pd_controls.refreshTarget = this;\\n\"+\n",
       "\"                var thisexecInfo = {\\\"options\\\":{}};\\n\"+\n",
       "\"                thisexecInfo.options.targetDivId = this;\\n\"+\n",
       "\"                retQueue.push( readExecInfo(pd_controls, node.get(0), false, thisexecInfo) );\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        return retQueue\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"\\n\"+\n",
       "\"    console.log(\\\"execution info: \\\", execInfo);\\n\"+\n",
       "\"    return execInfo;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function runElement(element, searchParents){\\n\"+\n",
       "\"    var pd_controls = element.getAttribute(\\\"pixiedust\\\");\\n\"+\n",
       "\"    if (!pd_controls){\\n\"+\n",
       "\"        $(element).parents(\\\"[pixiedust]\\\").each(function(){\\n\"+\n",
       "\"            pd_controls = pd_controls || this.getAttribute(\\\"pixiedust\\\");\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    var execQueue = [];\\n\"+\n",
       "\"    function addToQueue(execInfo){\\n\"+\n",
       "\"        if (Array.isArray(execInfo)){\\n\"+\n",
       "\"            execInfo.forEach(function(exec){\\n\"+\n",
       "\"                addToQueue(exec);\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        }else{\\n\"+\n",
       "\"            execQueue.push(execInfo);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    if (pd_controls){\\n\"+\n",
       "\"        pd_controls = JSON.parse(pd_controls);\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        addToQueue( readExecInfo(pd_controls, element, searchParents) );\\n\"+\n",
       "\"\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $(element).children(\\\"target[pd_target]\\\").each(function(){\\n\"+\n",
       "\"            addToQueue( readExecInfo(pd_controls, this, searchParents))\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return execQueue;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function filterNonTargetElements(element){\\n\"+\n",
       "\"    if (element && [\\\"I\\\", \\\"DIV\\\"].includes(element.tagName)){\\n\"+\n",
       "\"        if (!element.hasAttribute(\\\"pd_options\\\") || $(element).find(\\\"> pd_options\\\").length == 0 || element.hasAttribute(\\\"pd_render_onload\\\")){\\n\"+\n",
       "\"            return filterNonTargetElements(element.parentElement);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return element;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"function readJSONAttribute(element, attrName){\\n\"+\n",
       "\"    var payload = resolveScriptMacros(element.getAttribute(attrName));\\n\"+\n",
       "\"    if (payload){\\n\"+\n",
       "\"        var parts = payload.split(\\\";\\\");\\n\"+\n",
       "\"        payload = {};\\n\"+\n",
       "\"        $.each( parts, function(){\\n\"+\n",
       "\"            var index = this.indexOf(\\\"=\\\");\\n\"+\n",
       "\"            if ( index > 0){\\n\"+\n",
       "\"                payload[this.substring(0, index)] = this.substring(index+1);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }else{\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $(element).find(\\\"> \\\" + attrName).each(function(){\\n\"+\n",
       "\"            try{\\n\"+\n",
       "\"                payload = JSON.parse($(this).text());\\n\"+\n",
       "\"                for (var key in payload) { \\n\"+\n",
       "\"                    payload[key] = resolveScriptMacros(payload[key]); \\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            }catch(e){\\n\"+\n",
       "\"                console.log(\\\"Error parsing \\\" + attrName + \\\", invalid json\\\", e);\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        })\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    return payload;\\n\"+\n",
       "\"}\\n\"+\n",
       "\"\\n\"+\n",
       "\"\\n\"+\n",
       "\"function processEvent(event){\\n\"+\n",
       "\"    if (event.pd_processed){\\n\"+\n",
       "\"        return;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    var payload = readJSONAttribute(event.target, \\\"pd_event_payload\\\");\\n\"+\n",
       "\"    if (payload){\\n\"+\n",
       "\"        pixiedust.sendEvent(payload, $(event.target).uniqueId().attr('id'));\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    execQueue = runElement(filterNonTargetElements(event.target));\\n\"+\n",
       "\"    \\n\"+\n",
       "\"    $.each( execQueue, function(index, value){\\n\"+\n",
       "\"        if (value){\\n\"+\n",
       "\"            event.pd_processed = true;\\n\"+\n",
       "\"            value.execute();\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    });\\n\"+\n",
       "\"}\\n\"+\n",
       "\"$(document).on( \\\"click\\\", \\\"[pixiedust]\\\", function(event){\\n\"+\n",
       "\"    if (event.target.tagName == \\\"SELECT\\\" || \\n\"+\n",
       "\"        (event.target.tagName == \\\"INPUT\\\" && (getAttribute(event.target, \\\"type\\\", \\\"\\\").toLowerCase() != \\\"button\\\")) || \\n\"+\n",
       "\"        $(event.target).is(':checkbox')){\\n\"+\n",
       "\"        return;\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    processEvent(event)\\n\"+\n",
       "\"});\\n\"+\n",
       "\"\\n\"+\n",
       "\"$(document).on( \\\"change\\\", \\\"[pixiedust]\\\", function(event){\\n\"+\n",
       "\"    processEvent(event)\\n\"+\n",
       "\"});\\n\"+\n",
       "\"\\n\"+\n",
       "\"\\n\"+\n",
       "\"$(document).on(\\\"pd_event\\\", function(event, eventInfo){\\n\"+\n",
       "\"    targetDivId = eventInfo.targetDivId;\\n\"+\n",
       "\"    if (targetDivId){\\n\"+\n",
       "\"        eventHandlers = $(\\\"pd_event_handler\\\").filter(function(){\\n\"+\n",
       "\"            source = this.getAttribute(\\\"pd_source\\\");\\n\"+\n",
       "\"            if (source == \\\"*\\\" || source == targetDivId || source == eventInfo.type){\\n\"+\n",
       "\"                return true;\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"            \\n\"+\n",
       "\"            return $(this).parents(\\\"[pd_target]\\\").filter(function(){\\n\"+\n",
       "\"                return this.getAttribute(\\\"pd_target\\\") == targetDivId;\\n\"+\n",
       "\"            }).length > 0;\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"        eventHandlers.each(function(){\\n\"+\n",
       "\"            execQueue = runElement(this, false);\\n\"+\n",
       "\"            $.each( execQueue, function(index, value){\\n\"+\n",
       "\"                if (value){\\n\"+\n",
       "\"                    if (value.targetDivId == \\\"pixiedust_dummy\\\"){\\n\"+\n",
       "\"                        value.targetDivId = null;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    \\n\"+\n",
       "\"                    if (value.script){\\n\"+\n",
       "\"                        value.script = \\\"true=True\\\\nfalse=False\\\\neventInfo=\\\"+JSON.stringify(eventInfo) + \\\"\\\\n\\\" + value.script;\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                    value.execute();\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"            });\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }else if ( eventInfo.type == \\\"pd_load\\\" && eventInfo.targetNode){\\n\"+\n",
       "\"        var execQueue = []\\n\"+\n",
       "\"        function accept(element){\\n\"+\n",
       "\"            return element.hasAttribute(\\\"pd_widget\\\") || element.hasAttribute(\\\"pd_render_onload\\\") || element.hasAttribute(\\\"pd_refresh_rate\\\");\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"        eventInfo.targetNode.find(\\\"div\\\").each(function(){\\n\"+\n",
       "\"            if (accept(this)){\\n\"+\n",
       "\"                var thisId = $(this).uniqueId().attr('id');\\n\"+\n",
       "\"                this.setAttribute( \\\"id\\\", thisId );\\n\"+\n",
       "\"                if (!this.hasAttribute(\\\"pd_target\\\") ){\\n\"+\n",
       "\"                    this.setAttribute(\\\"pd_target\\\", this.getAttribute(\\\"id\\\") );\\n\"+\n",
       "\"                }\\n\"+\n",
       "\"                thisQueue = runElement(this, false);\\n\"+\n",
       "\"                var loadingDiv = this;\\n\"+\n",
       "\"                $.each( thisQueue, function(index, value){\\n\"+\n",
       "\"                    if (value){\\n\"+\n",
       "\"                        value.partialUpdate = true;\\n\"+\n",
       "\"                        execQueue.push( value );\\n\"+\n",
       "\"                        refreshRate = loadingDiv.getAttribute(\\\"pd_refresh_rate\\\");\\n\"+\n",
       "\"                        if (refreshRate){\\n\"+\n",
       "\"                            var ival = setInterval(function(){\\n\"+\n",
       "\"                                if ($('#' + thisId).length == 0){\\n\"+\n",
       "\"                                    console.log(\\\"Clearing refresh timer\\\", ival);\\n\"+\n",
       "\"                                    clearInterval(ival);\\n\"+\n",
       "\"                                    return;\\n\"+\n",
       "\"                                }\\n\"+\n",
       "\"                                value.execute();\\n\"+\n",
       "\"                            }, parseInt( refreshRate) );\\n\"+\n",
       "\"                        }\\n\"+\n",
       "\"                    }\\n\"+\n",
       "\"                })\\n\"+\n",
       "\"            }\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"\\n\"+\n",
       "\"        \\n\"+\n",
       "\"        $.each( execQueue, function(index, value){\\n\"+\n",
       "\"            value.execute();\\n\"+\n",
       "\"        });\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"    else{\\n\"+\n",
       "\"        if ( eventInfo.type != \\\"pd_load\\\"){\\n\"+\n",
       "\"            console.log(\\\"Warning: got a pd_event with no targetDivId\\\", eventInfo);\\n\"+\n",
       "\"        }\\n\"+\n",
       "\"    }\\n\"+\n",
       "\"});\";\n",
       "    try{\n",
       "        g.appendChild(document.createTextNode(code));\n",
       "    }catch(e){\n",
       "        g.text = code;\n",
       "    }\n",
       "    s.parentNode.insertBefore(g,s);\n",
       "}"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                    \n",
       "\n",
       "<style>\n",
       "\n",
       "</style>\n",
       "\n",
       "<div id=\"fig_el1087851572009768026187057\"></div>\n",
       "<script>\n",
       "function mpld3_load_lib(url, callback){\n",
       "  var s = document.createElement('script');\n",
       "  s.src = url;\n",
       "  s.async = true;\n",
       "  s.onreadystatechange = s.onload = callback;\n",
       "  s.onerror = function(){console.warn(\"failed to load library \" + url);};\n",
       "  document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
       "}\n",
       "\n",
       "if(typeof(mpld3) !== \"undefined\" && mpld3._mpld3IsLoaded){\n",
       "   // already loaded: just create the figure\n",
       "   !function(mpld3){\n",
       "       // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions3cdb283f\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title3cdb283f\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title3cdb283f\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields3cdb283f\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f6\" class=\"field3cdb283f\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f2\" class=\"field3cdb283f\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f3\" class=\"field3cdb283f\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f4\" class=\"field3cdb283f\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f1\" class=\"field3cdb283f\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f9\" class=\"field3cdb283f\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f8\" class=\"field3cdb283f\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f5\" class=\"field3cdb283f\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f7\" class=\"field3cdb283f\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields3cdb283f\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f9-keyFields3cdb283f\" data-field=\"name\">name<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields3cdb283f\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f1-valueFields3cdb283f\" data-field=\"mpg\">mpg<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f3-valueFields3cdb283f\" data-field=\"engine\">engine<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields3cdb283f\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML3cdb283f');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML3cdb283f');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution3cdb283f\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution3cdb283f\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution3cdb283f\").length > 0 ){\n",
       "                    $(\"#execution3cdb283f\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone3cdb283f != \"undefined\"){\n",
       "                    onDisplayDone3cdb283f();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='grouped',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='3cdb283f',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields3cdb283f'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields3cdb283f'));\n",
       "$('#chartOptions3cdb283f *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions3cdb283f *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS3cdb283f').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields3cdb283f').length && $('#valueFields3cdb283f').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields3cdb283f').length && $('#keyFields3cdb283f').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions3cdb283f *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field3cdb283f').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field3cdb283f-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields3cdb283f, #valueFields3cdb283f').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field3cdb283f');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-3cdb283f').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "       mpld3.draw_figure(\"fig_el1087851572009768026187057\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.5, -0.19259659322238554], \"rotation\": -0.0, \"id\": \"el108785155720912\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.4238351254480287, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785157312592\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5876144962166467, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785157313232\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1060.5], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785156011792\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785156011856\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785152538896\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155717776\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785154109904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785156063312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785152700816\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785152701008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785154536720\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785154534224\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785154536400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785154502480\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785154501968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785154375504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785154036560\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785154036944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155120912\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155123152\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785157915536\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785157916368\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785157915984\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155245008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785155245648\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785155384656\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108784402131280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data24\", \"id\": \"el108785108362256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data25\", \"id\": \"el108785154951056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data26\", \"id\": \"el108785154950864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data27\", \"id\": \"el108785156901136\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data28\", \"id\": \"el108785156901200\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data29\", \"id\": \"el108785155138192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data30\", \"id\": \"el108785155136016\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data31\", \"id\": \"el108785162041168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data32\", \"id\": \"el108785162038416\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data33\", \"id\": \"el108785162041104\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data34\", \"id\": \"el108785154746640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data35\", \"id\": \"el108785153184080\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data36\", \"id\": \"el108785155063376\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data37\", \"id\": \"el108785155064848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data38\", \"id\": \"el108785155062224\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data23\", \"id\": \"el108785156780944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data39\", \"id\": \"el108785156778832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data40\", \"id\": \"el108785157314320\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data40\", \"id\": \"el108785157314192\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data41\", \"id\": \"el108785155681616\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785156291984\", \"ydomain\": [0.0, 1060.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.775, 0.755]}], \"height\": 360.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data40\": [[0.3680804460374353, 1.0874540103016925, 0.5318598168060533], [0.407905217045002, 1.0874540103016925, 0.5716845878136201], [0.407905217045002, 1.1132082413539368, 0.5716845878136201], [0.3680804460374353, 1.1132082413539368, 0.5318598168060533]], \"data41\": [[0.3640979689366787, 1.0653789551140544], [0.6359020310633214, 1.0653789551140544], [0.639884508164078, 1.0653789551140544], [0.639884508164078, 1.072737306843267], [0.639884508164078, 1.1242457689477556], [0.639884508164078, 1.1316041206769685], [0.6359020310633214, 1.1316041206769685], [0.3640979689366787, 1.1316041206769685], [0.36011549183592195, 1.1316041206769685], [0.36011549183592195, 1.1242457689477556], [0.36011549183592195, 1.072737306843267], [0.36011549183592195, 1.0653789551140544], [0.3640979689366787, 1.0653789551140544]], \"data28\": [[8.0, 0.0], [8.25, 0.0], [8.25, 20.6], [8.0, 20.6]], \"data06\": [[4.75, 0.0], [5.0, 0.0], [5.0, 262.0], [4.75, 262.0]], \"data08\": [[6.75, 0.0], [7.0, 0.0], [7.0, 156.0], [6.75, 156.0]], \"data09\": [[7.75, 0.0, 13.75], [8.0, 0.0, 14.0], [8.0, 225.0, 14.0], [7.75, 225.0, 13.75]], \"data20\": [[0.0, 0.0], [0.25, 0.0], [0.25, 34.3], [0.0, 34.3]], \"data21\": [[1.0, 0.0], [1.25, 0.0], [1.25, 21.5], [1.0, 21.5]], \"data22\": [[2.0, 0.0], [2.25, 0.0], [2.25, 47.5], [2.0, 47.5]], \"data05\": [[3.75, 0.0], [4.0, 0.0], [4.0, 555.0], [3.75, 555.0]], \"data02\": [[0.75, 0.0], [1.0, 0.0], [1.0, 121.0], [0.75, 121.0]], \"data04\": [[2.75, 0.0], [3.0, 0.0], [3.0, 112.0], [2.75, 112.0]], \"data26\": [[6.0, 0.0], [6.25, 0.0], [6.25, 16.0], [6.0, 16.0]], \"data01\": [[-0.25, 0.0, 18.75], [0.0, 0.0, 19.0], [0.0, 97.0, 19.0], [-0.25, 97.0, 18.75]], \"data23\": [[3.0, 0.0, 19.0], [3.25, 0.0, 19.25], [3.25, 27.0, 19.25], [3.0, 27.0, 19.0]], \"data24\": [[4.0, 0.0], [4.25, 0.0], [4.25, 33.5], [4.0, 33.5]], \"data03\": [[1.75, 0.0], [2.0, 0.0], [2.0, 1010.0], [1.75, 1010.0]], \"data27\": [[7.0, 0.0], [7.25, 0.0], [7.25, 25.8], [7.0, 25.8]], \"data07\": [[5.75, 0.0], [6.0, 0.0], [6.0, 250.0], [5.75, 250.0]], \"data37\": [[17.0, 0.0], [17.25, 0.0], [17.25, 39.1], [17.0, 39.1]], \"data36\": [[16.0, 0.0], [16.25, 0.0], [16.25, 63.0], [16.0, 63.0]], \"data35\": [[15.0, 0.0], [15.25, 0.0], [15.25, 155.6], [15.0, 155.6]], \"data34\": [[14.0, 0.0], [14.25, 0.0], [14.25, 18.0], [14.0, 18.0]], \"data25\": [[5.0, 0.0], [5.25, 0.0], [5.25, 20.0], [5.0, 20.0]], \"data32\": [[12.0, 0.0], [12.25, 0.0], [12.25, 36.0], [12.0, 36.0]], \"data31\": [[11.0, 0.0], [11.25, 0.0], [11.25, 12.0], [11.0, 12.0]], \"data30\": [[10.0, 0.0], [10.25, 0.0], [10.25, 11.0], [10.0, 11.0]], \"data39\": [[20.0, 0.0], [20.25, 0.0], [20.25, 58.5], [20.0, 58.5]], \"data38\": [[18.0, 0.0], [18.25, 0.0], [18.25, 37.7], [18.0, 37.7]], \"data19\": [[19.75, 0.0], [20.0, 0.0], [20.0, 187.0], [19.75, 187.0]], \"data18\": [[17.75, 0.0], [18.0, 0.0], [18.0, 89.0], [17.75, 89.0]], \"data15\": [[14.75, 0.0], [15.0, 0.0], [15.0, 518.0], [14.75, 518.0]], \"data14\": [[12.75, 0.0], [13.0, 0.0], [13.0, 491.0], [12.75, 491.0]], \"data17\": [[16.75, 0.0], [17.0, 0.0], [17.0, 79.0], [16.75, 79.0]], \"data16\": [[15.75, 0.0], [16.0, 0.0], [16.0, 142.0], [15.75, 142.0]], \"data11\": [[9.75, 0.0], [10.0, 0.0], [10.0, 318.0], [9.75, 318.0]], \"data10\": [[8.75, 0.0], [9.0, 0.0], [9.0, 98.0], [8.75, 98.0]], \"data13\": [[11.75, 0.0], [12.0, 0.0], [12.0, 120.0], [11.75, 120.0]], \"data12\": [[10.75, 0.0], [11.0, 0.0], [11.0, 400.0], [10.75, 400.0]], \"data29\": [[9.0, 0.0], [9.25, 0.0], [9.25, 28.0], [9.0, 28.0]], \"data33\": [[13.0, 0.0], [13.25, 0.0], [13.25, 94.2], [13.0, 94.2]]}, \"id\": \"el108785157200976\"});\n",
       "   }(mpld3);\n",
       "}else if(typeof define === \"function\" && define.amd){\n",
       "   // require.js is available: use it to load d3/mpld3\n",
       "   require.config({paths: {d3: \"https://mpld3.github.io/js/d3.v3.min\"}});\n",
       "   require([\"d3\"], function(d3){\n",
       "      window.d3 = d3;\n",
       "      mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "         // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions3cdb283f\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title3cdb283f\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title3cdb283f\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields3cdb283f\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f6\" class=\"field3cdb283f\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f2\" class=\"field3cdb283f\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f3\" class=\"field3cdb283f\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f4\" class=\"field3cdb283f\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f1\" class=\"field3cdb283f\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f9\" class=\"field3cdb283f\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f8\" class=\"field3cdb283f\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f5\" class=\"field3cdb283f\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f7\" class=\"field3cdb283f\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields3cdb283f\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f9-keyFields3cdb283f\" data-field=\"name\">name<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields3cdb283f\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f1-valueFields3cdb283f\" data-field=\"mpg\">mpg<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f3-valueFields3cdb283f\" data-field=\"engine\">engine<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields3cdb283f\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML3cdb283f');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML3cdb283f');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution3cdb283f\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution3cdb283f\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution3cdb283f\").length > 0 ){\n",
       "                    $(\"#execution3cdb283f\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone3cdb283f != \"undefined\"){\n",
       "                    onDisplayDone3cdb283f();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='grouped',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='3cdb283f',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields3cdb283f'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields3cdb283f'));\n",
       "$('#chartOptions3cdb283f *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions3cdb283f *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS3cdb283f').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields3cdb283f').length && $('#valueFields3cdb283f').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields3cdb283f').length && $('#keyFields3cdb283f').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions3cdb283f *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field3cdb283f').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field3cdb283f-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields3cdb283f, #valueFields3cdb283f').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field3cdb283f');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-3cdb283f').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "         mpld3.draw_figure(\"fig_el1087851572009768026187057\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.5, -0.19259659322238554], \"rotation\": -0.0, \"id\": \"el108785155720912\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.4238351254480287, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785157312592\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5876144962166467, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785157313232\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1060.5], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785156011792\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785156011856\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785152538896\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155717776\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785154109904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785156063312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785152700816\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785152701008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785154536720\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785154534224\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785154536400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785154502480\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785154501968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785154375504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785154036560\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785154036944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155120912\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155123152\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785157915536\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785157916368\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785157915984\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155245008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785155245648\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785155384656\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108784402131280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data24\", \"id\": \"el108785108362256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data25\", \"id\": \"el108785154951056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data26\", \"id\": \"el108785154950864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data27\", \"id\": \"el108785156901136\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data28\", \"id\": \"el108785156901200\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data29\", \"id\": \"el108785155138192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data30\", \"id\": \"el108785155136016\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data31\", \"id\": \"el108785162041168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data32\", \"id\": \"el108785162038416\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data33\", \"id\": \"el108785162041104\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data34\", \"id\": \"el108785154746640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data35\", \"id\": \"el108785153184080\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data36\", \"id\": \"el108785155063376\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data37\", \"id\": \"el108785155064848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data38\", \"id\": \"el108785155062224\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data23\", \"id\": \"el108785156780944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data39\", \"id\": \"el108785156778832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data40\", \"id\": \"el108785157314320\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data40\", \"id\": \"el108785157314192\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data41\", \"id\": \"el108785155681616\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785156291984\", \"ydomain\": [0.0, 1060.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.775, 0.755]}], \"height\": 360.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data40\": [[0.3680804460374353, 1.0874540103016925, 0.5318598168060533], [0.407905217045002, 1.0874540103016925, 0.5716845878136201], [0.407905217045002, 1.1132082413539368, 0.5716845878136201], [0.3680804460374353, 1.1132082413539368, 0.5318598168060533]], \"data41\": [[0.3640979689366787, 1.0653789551140544], [0.6359020310633214, 1.0653789551140544], [0.639884508164078, 1.0653789551140544], [0.639884508164078, 1.072737306843267], [0.639884508164078, 1.1242457689477556], [0.639884508164078, 1.1316041206769685], [0.6359020310633214, 1.1316041206769685], [0.3640979689366787, 1.1316041206769685], [0.36011549183592195, 1.1316041206769685], [0.36011549183592195, 1.1242457689477556], [0.36011549183592195, 1.072737306843267], [0.36011549183592195, 1.0653789551140544], [0.3640979689366787, 1.0653789551140544]], \"data28\": [[8.0, 0.0], [8.25, 0.0], [8.25, 20.6], [8.0, 20.6]], \"data06\": [[4.75, 0.0], [5.0, 0.0], [5.0, 262.0], [4.75, 262.0]], \"data08\": [[6.75, 0.0], [7.0, 0.0], [7.0, 156.0], [6.75, 156.0]], \"data09\": [[7.75, 0.0, 13.75], [8.0, 0.0, 14.0], [8.0, 225.0, 14.0], [7.75, 225.0, 13.75]], \"data20\": [[0.0, 0.0], [0.25, 0.0], [0.25, 34.3], [0.0, 34.3]], \"data21\": [[1.0, 0.0], [1.25, 0.0], [1.25, 21.5], [1.0, 21.5]], \"data22\": [[2.0, 0.0], [2.25, 0.0], [2.25, 47.5], [2.0, 47.5]], \"data05\": [[3.75, 0.0], [4.0, 0.0], [4.0, 555.0], [3.75, 555.0]], \"data02\": [[0.75, 0.0], [1.0, 0.0], [1.0, 121.0], [0.75, 121.0]], \"data04\": [[2.75, 0.0], [3.0, 0.0], [3.0, 112.0], [2.75, 112.0]], \"data26\": [[6.0, 0.0], [6.25, 0.0], [6.25, 16.0], [6.0, 16.0]], \"data01\": [[-0.25, 0.0, 18.75], [0.0, 0.0, 19.0], [0.0, 97.0, 19.0], [-0.25, 97.0, 18.75]], \"data23\": [[3.0, 0.0, 19.0], [3.25, 0.0, 19.25], [3.25, 27.0, 19.25], [3.0, 27.0, 19.0]], \"data24\": [[4.0, 0.0], [4.25, 0.0], [4.25, 33.5], [4.0, 33.5]], \"data03\": [[1.75, 0.0], [2.0, 0.0], [2.0, 1010.0], [1.75, 1010.0]], \"data27\": [[7.0, 0.0], [7.25, 0.0], [7.25, 25.8], [7.0, 25.8]], \"data07\": [[5.75, 0.0], [6.0, 0.0], [6.0, 250.0], [5.75, 250.0]], \"data37\": [[17.0, 0.0], [17.25, 0.0], [17.25, 39.1], [17.0, 39.1]], \"data36\": [[16.0, 0.0], [16.25, 0.0], [16.25, 63.0], [16.0, 63.0]], \"data35\": [[15.0, 0.0], [15.25, 0.0], [15.25, 155.6], [15.0, 155.6]], \"data34\": [[14.0, 0.0], [14.25, 0.0], [14.25, 18.0], [14.0, 18.0]], \"data25\": [[5.0, 0.0], [5.25, 0.0], [5.25, 20.0], [5.0, 20.0]], \"data32\": [[12.0, 0.0], [12.25, 0.0], [12.25, 36.0], [12.0, 36.0]], \"data31\": [[11.0, 0.0], [11.25, 0.0], [11.25, 12.0], [11.0, 12.0]], \"data30\": [[10.0, 0.0], [10.25, 0.0], [10.25, 11.0], [10.0, 11.0]], \"data39\": [[20.0, 0.0], [20.25, 0.0], [20.25, 58.5], [20.0, 58.5]], \"data38\": [[18.0, 0.0], [18.25, 0.0], [18.25, 37.7], [18.0, 37.7]], \"data19\": [[19.75, 0.0], [20.0, 0.0], [20.0, 187.0], [19.75, 187.0]], \"data18\": [[17.75, 0.0], [18.0, 0.0], [18.0, 89.0], [17.75, 89.0]], \"data15\": [[14.75, 0.0], [15.0, 0.0], [15.0, 518.0], [14.75, 518.0]], \"data14\": [[12.75, 0.0], [13.0, 0.0], [13.0, 491.0], [12.75, 491.0]], \"data17\": [[16.75, 0.0], [17.0, 0.0], [17.0, 79.0], [16.75, 79.0]], \"data16\": [[15.75, 0.0], [16.0, 0.0], [16.0, 142.0], [15.75, 142.0]], \"data11\": [[9.75, 0.0], [10.0, 0.0], [10.0, 318.0], [9.75, 318.0]], \"data10\": [[8.75, 0.0], [9.0, 0.0], [9.0, 98.0], [8.75, 98.0]], \"data13\": [[11.75, 0.0], [12.0, 0.0], [12.0, 120.0], [11.75, 120.0]], \"data12\": [[10.75, 0.0], [11.0, 0.0], [11.0, 400.0], [10.75, 400.0]], \"data29\": [[9.0, 0.0], [9.25, 0.0], [9.25, 28.0], [9.0, 28.0]], \"data33\": [[13.0, 0.0], [13.25, 0.0], [13.25, 94.2], [13.0, 94.2]]}, \"id\": \"el108785157200976\"});\n",
       "      });\n",
       "    });\n",
       "}else{\n",
       "    // require.js not available: dynamically load d3 & mpld3\n",
       "    mpld3_load_lib(\"https://mpld3.github.io/js/d3.v3.min.js\", function(){\n",
       "         mpld3_load_lib(\"https://mpld3.github.io/js/mpld3.v0.3.js\", function(){\n",
       "                 // don't remove this comment\n",
       "mpld3.register_plugin(\"dialog\", DialogPlugin);\n",
       "DialogPlugin.prototype = Object.create(mpld3.Plugin.prototype);\n",
       "DialogPlugin.prototype.constructor = DialogPlugin;\n",
       "DialogPlugin.prototype.requiredProps = [\"handlerId\"];    \n",
       "function DialogPlugin(fig, props) {\n",
       "    mpld3.Plugin.call(this, fig, props);\n",
       "    var DialogPluginButton = mpld3.ButtonFactory({\n",
       "        buttonID: \"DialogPlugin\",\n",
       "        sticky: false,\n",
       "        onActivate: function() {\n",
       "            \n",
       "            var global={}\n",
       "    \n",
       "require(['base/js/dialog'],function(dialog){\n",
       "    var modal = dialog.modal;\n",
       "    var options = {\n",
       "        title: \"Pixiedust: Chart Options\",\n",
       "        body: '<form id=\"chartOptions3cdb283f\"><style type=\"text/css\">\t.field-container {\t}\t.field-container ul {\t\toverflow-y: auto;\t\tborder: 1px solid #ccc;\t\tpadding: 5px 0 0 0;\t\tlist-style-type: none;\t}\t.field-container label {\t\tcolor: #008571;\t\tfont-weight: bold;\t}\t.field-container li {\t\tmargin: 0px 5px 5px 5px;\t\tpadding: 5px;\t\tborder: 1px solid #ccc;\t\tborder-radius: 5px;\t\tbackground-color: #daffff;\t\twidth: auto;\t\tmin-width: 150px;\t}\t.field-remove {\t\tcolor: #777;\t\tfont-size: 14px;\t\tfloat: right;\t\tmargin: 0px;\t\tcursor: pointer;\t}\t.field-remove:after {\t\tcontent: \"x\";\t}\t.field-name {\t\tfont-weight: 600;\t}\t.field-type {    float: right;    font-style: italic;\t}\t.all-fields {\t\theight: 300px;\t}\t.keys-fields > ul {\t\theight: 147px;\t}\t.keys-fields .field-type,\t.values-fields .field-type {\t\tdisplay: none;\t}\t.field-container .keys-fields > label:nth-child(2),\t.field-container .values-fields > label:nth-child(2) {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > ul,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > ul {\t\topacity: 0.5;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:first-child,\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:first-child {\t\tdisplay: none;\t}\t.field-container.field-drag .keys-fields:not(.field-drag-acceptable) > label:nth-child(2),\t.field-container.field-drag .values-fields:not(.field-drag-acceptable) > label:nth-child(2) {\t\tcolor: #ff0000;\t\tfont-weight: 400;\t\tdisplay: inline-block;\t}\t.fields-link {\t\tcolor: #337ab7;\t\tcursor: pointer;    display: inline-block;    font-size: 0.95em;    font-weight: 300;    position: absolute;    right: 20px;    top: 3px;\t}\t.fields-link:hover {\t\tcolor: #286090;\t\ttext-decoration: underline;\t}\t.all-fields.numeric-only > [data-field-type=\"string\"] {    display: none;\t}</style><div class=\"container col-sm-12\">\t<div class=\"row\">\t\t<div class=\"form-group col-sm-12\" style=\"padding-right:10px;\">\t\t\t<label for=\"title3cdb283f\">Title:</label>\t\t\t<input type=\"text\" class=\"form-control\" id=\"title3cdb283f\" name=\"title\" value=\"\">\t\t</div>\t</div>\t<div class=\"field-container row\">\t\t<div class=\"col-sm-6\" style=\"padding: 0px 5px 0px 0px;\">\t\t\t<label>Fields:</label> <span class=\"fields-link\">Show only numeric columns</span>\t\t\t<input type=\"text\" class=\"options-fields-search form-control input-sm\" placeholder=\"Search/Filter Fields\">\t\t\t<ul id=\"allFields3cdb283f\" class=\"all-fields\">\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f6\" class=\"field3cdb283f\" data-field=\"acceleration\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">acceleration</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f2\" class=\"field3cdb283f\" data-field=\"cylinders\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">cylinders</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f3\" class=\"field3cdb283f\" data-field=\"engine\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">engine</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f4\" class=\"field3cdb283f\" data-field=\"horsepower\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">horsepower</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f1\" class=\"field3cdb283f\" data-field=\"mpg\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">mpg</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f9\" class=\"field3cdb283f\" data-field=\"name\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">name</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f8\" class=\"field3cdb283f\" data-field=\"origin\" data-field-type=\"string\">\t\t\t\t\t<span class=\"field-name\">origin</span>\t\t\t\t\t<span class=\"field-type\">string</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f5\" class=\"field3cdb283f\" data-field=\"weight\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">weight</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f7\" class=\"field3cdb283f\" data-field=\"year\" data-field-type=\"numeric\">\t\t\t\t\t<span class=\"field-name\">year</span>\t\t\t\t\t<span class=\"field-type\">numeric</span>\t\t\t\t\t<a class=\"field3cdb283f-remove\"></a>\t\t\t\t</li>\t\t\t\t\t\t\t</ul>\t\t</div>\t\t<div class=\"col-sm-6\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t\t\t\t<div class=\"keys-fields\">\t\t\t\t<label>Keys: <i class=\"fa fa-question-circle\" title=\"Controls the X-Axis of the chart. Rows will be grouped by Key columns. Columns may be numeric or string.\"></i></label>\t\t\t\t<label>Keys: Only numeric or string columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t<ul id=\"keyFields3cdb283f\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f9-keyFields3cdb283f\" data-field=\"name\">name<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t</div>\t\t\t\t\t\t<div class=\"values-fields\">\t\t\t\t<label>Values: <i class=\"fa fa-question-circle\" title=\"Controls the Y-Axis of the chart. Values must be numeric columns.\"></i></label>\t\t\t\t<label>Values: Only numeric columns are supported <i class=\"fa fa-warning\"></i></label>\t\t\t\t\t\t\t\t<ul id=\"valueFields3cdb283f\" style=\"height: 147px;\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f1-valueFields3cdb283f\" data-field=\"mpg\">mpg<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li id=\"field3cdb283f-f3-valueFields3cdb283f\" data-field=\"engine\">engine<a class=\"field3cdb283f-remove field-remove\"></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\t\t\t\t\t\t\t\t<span style=\"font-size:smaller\" id=\"warnEmptyValueFields3cdb283f\">PixieDust will automatically use count aggregation for each key</span>\t\t\t\t\t\t\t</div>\t\t</div>\t</div>\t<div class=\"row\">\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 0px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\">Aggregation:</label>\t\t\t\t<select class=\"form-control\" name=\"aggregation\" style=\"margin-left: 0px;\">\t\t\t\t\t\t\t\t\t\t<option value=\"SUM\" selected>SUM</option>\t\t\t\t\t\t\t\t\t\t<option value=\"AVG\">AVG</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MIN\">MIN</option>\t\t\t\t\t\t\t\t\t\t<option value=\"MAX\">MAX</option>\t\t\t\t\t\t\t\t\t\t<option value=\"COUNT\">COUNT</option>\t\t\t\t\t\t\t\t\t</select>\t\t\t</div>\t\t</div>\t\t\t\t\t\t<div class=\"col-sm-4\" style=\"padding: 0px 5px 0px 5px;\">\t\t\t<div class=\"form-group\">\t\t\t\t<label class=\"field\"># of Rows to Display:</label>\t\t\t\t<input id=\"rows-count\" class=\"form-control\" name=\"rowCount\" type=\"number\" min=\"1\" max=\"10000\" value=\"25\">\t\t\t</div>\t\t</div>\t\t\t</div></div></form><div class=\"bootbox-body row\"></div>',\n",
       "        sanitize:false,\n",
       "        notebook: IPython.notebook,\n",
       "        \n",
       "        keyboard_manager: IPython.notebook.keyboard_manager,\n",
       "        buttons: {\n",
       "            \n",
       "            OK: {\n",
       "                class : \"btn-primary btn-ok\",\n",
       "                click: function() {\n",
       "                    \n",
       "(\n",
       "\n",
       "\n",
       "function() {\n",
       "    function getTargetNode(){\n",
       "        var n = $('#' + 'wrapperHTML3cdb283f');\n",
       "        if (n.length == 0 ){\n",
       "            n = $('#wrapperHTML3cdb283f');\n",
       "        }\n",
       "        return n;\n",
       "    }\n",
       "    cellId = typeof cellId === \"undefined\" ? \"\" : cellId;\n",
       "    var curCell=IPython.notebook.get_cells().filter(function(cell){\n",
       "        return cell.cell_id==\"174EF8FEFACF47F9811183C2C0EE3DC3\".replace(\"cellId\",cellId);\n",
       "    });\n",
       "    curCell=curCell.length>0?curCell[0]:null;\n",
       "    console.log(\"curCell\",curCell);\n",
       "    var startWallToWall;\n",
       "    //Resend the display command\n",
       "    var callbacks = {\n",
       "        shell : {\n",
       "            payload : {\n",
       "                set_next_input : function(payload){\n",
       "                    if (curCell){\n",
       "                        curCell._handle_set_next_input(payload);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "        },\n",
       "        iopub:{\n",
       "            output:function(msg){\n",
       "                console.log(\"msg\", msg);\n",
       "                if (false){\n",
       "                    //curCell.output_area.clear_output(false, true);\n",
       "                    curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                    return;\n",
       "                }\n",
       "                var msg_type=msg.header.msg_type;\n",
       "                var content = msg.content;\n",
       "                var executionTime = $(\"#execution3cdb283f\");\n",
       "                if(msg_type===\"stream\"){\n",
       "                    getTargetNode().html(content.text);\n",
       "                }else if (msg_type===\"display_data\" || msg_type===\"execute_result\"){\n",
       "                    var html=null;\n",
       "                    if (!!content.data[\"text/html\"]){\n",
       "                        html=content.data[\"text/html\"];\n",
       "                    }else if (!!content.data[\"image/png\"]){\n",
       "                        html=html||\"\";\n",
       "                        html+=\"<img src='data:image/png;base64,\" +content.data[\"image/png\"]+\"'></img>\";\n",
       "                    }\n",
       "                                                    \n",
       "                    if (!!content.data[\"application/javascript\"]){\n",
       "                        try {\n",
       "                            eval(content.data[\"application/javascript\"]);\n",
       "                        } catch(err) {\n",
       "                            curCell.output_area.handle_output.apply(curCell.output_area, arguments);\n",
       "                        }                        \n",
       "                        return;\n",
       "                    }\n",
       "                    \n",
       "                    if (html){\n",
       "                        if (pixiedust){\n",
       "                            if (callbacks.options && callbacks.options.nostore_delaysave){\n",
       "                                setTimeout(function(){\n",
       "                                    pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                                }, 1000);\n",
       "                            }else{\n",
       "                                pixiedust.saveOutputInCell(curCell, content, html, msg_type);\n",
       "                            }                         \n",
       "                        }\n",
       "\n",
       "                        try{\n",
       "                            getTargetNode().html(html);\n",
       "                        }catch(e){\n",
       "                            console.log(\"Invalid html output\", e, html);\n",
       "                            getTargetNode().html( \"Invalid html output: \" + e.message + \"<pre>\" \n",
       "                                + html.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/\"/g,'&quot;') + \"<pre>\");\n",
       "                        }\n",
       "                    }\n",
       "                }else if (msg_type === \"error\") {\n",
       "                    require(['base/js/utils'], function(utils) {\n",
       "                        var tb = content.traceback;\n",
       "                        console.log(\"tb\",tb);\n",
       "                        if (tb && tb.length>0){\n",
       "                            var data = tb.reduce(function(res, frame){return res+frame+'\\\\n';},\"\");\n",
       "                            console.log(\"data\",data);\n",
       "                            data = utils.fixConsole(data);\n",
       "                            data = utils.fixCarriageReturn(data);\n",
       "                            data = utils.autoLinkUrls(data);\n",
       "                            getTargetNode().html(\"<pre>\" + data +\"</pre>\");\n",
       "                        }\n",
       "                    });\n",
       "                }\n",
       "\n",
       "                //Append profiling info\n",
       "                if (executionTime.length > 0 && $(\"#execution3cdb283f\").length == 0 ){\n",
       "                    getTargetNode().append(executionTime);\n",
       "                }else if (startWallToWall && $(\"#execution3cdb283f\").length > 0 ){\n",
       "                    $(\"#execution3cdb283f\").append($(\"<div/>\").text(\"Wall to Wall time: \" + ( (new Date().getTime() - startWallToWall)/1000 ) + \"s\"));\n",
       "                }\n",
       "\n",
       "                if (typeof onDisplayDone3cdb283f != \"undefined\"){\n",
       "                    onDisplayDone3cdb283f();\n",
       "                }\n",
       "                $(document).trigger('pd_event', {type:\"pd_load\", targetNode: getTargetNode()});\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "    \n",
       "    if (IPython && IPython.notebook && IPython.notebook.session && IPython.notebook.session.kernel){\n",
       "        var command = \"display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='grouped',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='3cdb283f',nostore_pixiedust='true')\".replace(\"cellId\",cellId);\n",
       "        function addOptions(options, override=true){\n",
       "            function getStringRep(v) {\n",
       "                return \"'\" + v + \"'\";\n",
       "            }\n",
       "            for (var key in (options||{})){\n",
       "                var value = options[key];\n",
       "                var hasValue = value != null && typeof value !== 'undefined' && value !== '';\n",
       "                var replaceValue = hasValue ? (key+\"=\" + getStringRep(value) ) : \"\";\n",
       "                var pattern = (hasValue?\"\":\",\")+\"\\\\s*\" + key + \"\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "                var rpattern=new RegExp(pattern);\n",
       "                var n = command.search(rpattern);\n",
       "                if ( n >= 0 ){\n",
       "                    if (override){\n",
       "                        command = command.replace(rpattern, replaceValue);\n",
       "                    }\n",
       "                }else if (hasValue){\n",
       "                    var n = command.lastIndexOf(\")\");\n",
       "                    command = [command.slice(0, n), (command[n-1]==\"(\"? \"\":\",\") + replaceValue, command.slice(n)].join('')\n",
       "                }        \n",
       "            }\n",
       "        }\n",
       "        if(typeof cellMetadata != \"undefined\" && cellMetadata.displayParams){\n",
       "            addOptions(cellMetadata.displayParams);\n",
       "        }else if (curCell && curCell._metadata.pixiedust ){\n",
       "            addOptions(curCell._metadata.pixiedust.displayParams || {}, ('False'=='True') );\n",
       "        }\n",
       "        addOptions({});\n",
       "        \n",
       "        \n",
       "    \n",
       "var addValueToCommand = function(name, value) {\n",
       "    if (value) {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "        }\n",
       "        else {\n",
       "            startIndex = endIndex = command.lastIndexOf(\")\");\n",
       "        }\n",
       "        var start = command.substring(0,startIndex);\n",
       "        var end = command.substring(endIndex);\n",
       "        command = start + \",\" + name +\"='\" + value + \"'\" + end;\n",
       "    }\n",
       "    else {\n",
       "        var startIndex, endIndex;\n",
       "        startIndex = command.indexOf(\",\"+name+\"=\");\n",
       "        if (startIndex >= 0) {\n",
       "            var commaIndex = command.indexOf(\",\", startIndex+1);\n",
       "            var quoteIndex = command.indexOf(\"'\", startIndex+1);\n",
       "            if (quoteIndex >=0 && quoteIndex < commaIndex) {\n",
       "                // value is enclosed in quotes - end of value will be second quote\n",
       "                endIndex = command.indexOf(\"'\", quoteIndex+1) + 1;\n",
       "            }\n",
       "            else if (commaIndex >= 0) {\n",
       "                // end of value is the comma\n",
       "                endIndex = commaIndex;\n",
       "            }\n",
       "            else {\n",
       "                // no quote or comma found - end of value is at the very end\n",
       "                endIndex = command.indexOf(\")\", startIndex+1);\n",
       "            }\n",
       "            var start = command.substring(0,startIndex);\n",
       "            var end = command.substring(endIndex);\n",
       "            command = start + end;\n",
       "        }\n",
       "    }\n",
       "};\n",
       "var getListValues = function(listId) {\n",
       "    var value = '';\n",
       "    $(listId + ' li').each(function(idx, li) {\n",
       "        if (value.length != 0) {\n",
       "            value += ',';\n",
       "        }\n",
       "        value += $(li).data('field');\n",
       "    });\n",
       "    return value;\n",
       "};\n",
       "addValueToCommand('keyFields',getListValues('#keyFields3cdb283f'));\n",
       "addValueToCommand('valueFields',getListValues('#valueFields3cdb283f'));\n",
       "$('#chartOptions3cdb283f *').filter(':input').each(function(){\n",
       "    if ($(this).is(':checkbox')) {\n",
       "        addValueToCommand($(this).attr('name'),$(this).is(':checked')+'');\t\n",
       "    }\n",
       "    else {\n",
       "        addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "    }\n",
       "});\n",
       "$('#chartOptions3cdb283f *').filter('select').each(function(){\n",
       "    addValueToCommand($(this).attr('name'),$(this).val() + '');\n",
       "});\n",
       "\n",
       "\n",
       "        \n",
       "        var pattern = \"\\\\w*\\\\s*=\\\\s*'(\\\\\\\\'|[^'])*'\";\n",
       "        var rpattern=new RegExp(pattern,\"g\");\n",
       "        var n = command.match(rpattern);\n",
       "        \n",
       "        var org_params = {}\n",
       "        callbacks.options = callbacks.options || {};\n",
       "        for (var i=0; i<n.length;i++){\n",
       "            var parts = n[i].split(\"=\")\n",
       "            callbacks.options[parts[0].trim()] = parts[1].trim();\n",
       "            if (parts[0].trim() == \"org_params\"){\n",
       "                var value = parts[1].trim()\n",
       "                var values = value.substring(1,value.length-1).split(\",\");\n",
       "                for (var p in values){\n",
       "                    org_params[values[p].trim()] = true;\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "        var displayParams={}\n",
       "        for (var i = 0; i < n.length; i++){\n",
       "            var parts=n[i].split(\"=\");\n",
       "            var key = parts[0].trim();\n",
       "            var value = parts[1].trim()\n",
       "            if (!key.startsWith(\"nostore_\") && key != \"showchrome\" && key != \"prefix\" && key != \"cell_id\" && key != \"org_params\" && !!!org_params[key]){\n",
       "                displayParams[key] = value.substring(1,value.length-1);\n",
       "            }\n",
       "        }\n",
       "        if(curCell&&curCell.output_area){\n",
       "            curCell._metadata.pixiedust = curCell._metadata.pixiedust || {}\n",
       "            curCell._metadata.pixiedust.displayParams=displayParams\n",
       "            curCell.output_area.outputs=[];\n",
       "            var old_msg_id = curCell.last_msg_id;\n",
       "            if (old_msg_id) {\n",
       "                curCell.kernel.clear_callbacks_for_msg(old_msg_id);\n",
       "            }\n",
       "        }else{\n",
       "            console.log(\"couldn't find the cell\");\n",
       "        }\n",
       "        \n",
       "        $('#wrapperJS3cdb283f').html(\"\")\n",
       "        getTargetNode().html('<div style=\"width:100px;height:60px;left:47%;position:relative\"><i class=\"fa fa-circle-o-notch fa-spin\" style=\"font-size:48px\"></i></div>'+\n",
       "        '<div style=\"text-align:center\">Loading your data. Please wait...</div>');\n",
       "        startWallToWall = new Date().getTime();\n",
       "        \n",
       "        console.log(\"Running command2\",command);\n",
       "        IPython.notebook.session.kernel.execute(command, callbacks, {silent:true,store_history:false,stop_on_error:true});\n",
       "    }\n",
       "}\n",
       ")()\n",
       "\n",
       "                }\n",
       "            },\n",
       "            Cancel: {\n",
       "                class : \"btn-cancel\",\n",
       "                click: function(){\n",
       "                    \n",
       "                }\n",
       "            }\n",
       "            \n",
       "        }\n",
       "    };\n",
       "    var modal_obj = modal(options);\n",
       "    modal_obj.addClass('pixiedust');\n",
       "    modal_obj.on('shown.bs.modal', function(){\n",
       "        \n",
       "        var isFF = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n",
       "        if( isFF && options.keyboard_manager){\n",
       "            //Only on FF, blur event issue, hard disable keyboard manager \n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            global.KMEnableProto = KeyboardManager.prototype.enable;\n",
       "            KeyboardManager.prototype.enable = function () {\n",
       "                this.enabled = false;\n",
       "            };\n",
       "        }\n",
       "        \n",
       "var btnok = $('.btn-ok');\n",
       "var setOkBtnStatus = function() {\n",
       "\tvar valueFieldsEmpty = ($('#valueFields3cdb283f').length && $('#valueFields3cdb283f').children().length === 0);\n",
       "\t\n",
       "\tif ( valueFieldsEmpty || \n",
       "\t\t($('#keyFields3cdb283f').length && $('#keyFields3cdb283f').children().length === 0)\n",
       "\t\t|| ($('#rows-count').length && Number($('#rows-count').val()) <= 0)) {\n",
       "\t\t\tbtnok.attr('disabled', 'disabled');\n",
       "\t}\n",
       "\telse {\n",
       "\t\tbtnok.attr('disabled', null);\n",
       "\t}\n",
       "}\n",
       "setOkBtnStatus();\n",
       "\n",
       "$('#chartOptions3cdb283f *').filter(':input').each(function(){\n",
       "\tIPython.keyboard_manager.register_events($(this));\n",
       "});\n",
       "$('.field3cdb283f').draggable({\n",
       "\thelper:\"clone\",\n",
       "\tcontainment:\"document\",\n",
       "\tstart: function(event, ui) {\n",
       "\t\t//$('.field-container').addClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').addClass('field-drag');\n",
       "\t},\n",
       "\tstop: function(event, ui) {\n",
       "\t\t//$('.field-container').removeClass(ui.helper.data(\"fieldType\") + '-field-drag');\n",
       "\t\t$('.field-container').removeClass('field-drag');\n",
       "\t}\n",
       "});\n",
       "$('.field3cdb283f-remove').click(function(e) {\n",
       "\te.preventDefault();\n",
       "\t$(this).parent().remove();\n",
       "\tif ($(this).children().length === 0) {\n",
       "\t\tsetOkBtnStatus();\n",
       "\t}\n",
       "\treturn false;\n",
       "});\n",
       "$('#keyFields3cdb283f, #valueFields3cdb283f').droppable({\n",
       "\taccept: function(d) {\n",
       "\t\tif ($(this).parent().hasClass('keys-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric' ||\n",
       "\t\t\t\td.data(\"fieldType\") === 'string' || \n",
       "\t\t\t\td.data(\"fieldType\") === 'date/time'; \n",
       "\t\t}\n",
       "\t\telse if ($(this).parent().hasClass('values-fields')) {\n",
       "\t\t\treturn d.data(\"fieldType\") === 'numeric';\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\treturn false;\n",
       "\t\t}\n",
       "\t},\n",
       "\tactivate: function(event, ui) {\n",
       "\t\t$(this).parent().addClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdeactivate: function(event, ui) {\n",
       "\t\t$(this).parent().removeClass('field-drag-acceptable');\n",
       "\t},\n",
       "\tdrop:function(event, ui) {\n",
       "\t\tvar newId = ui.draggable.attr('id') + '-' + $(this).attr('id');\n",
       "\t\tif ( $('#'+newId).length == 0) { \n",
       "\t\t\tvar el = ui.draggable.clone(true, true);\n",
       "\t\t\tel.attr(\"id\",newId);\n",
       "\t\t\tel.find(\"a\").addClass(\"field-remove\");\n",
       "\t\t\tel.appendTo($(this));\n",
       "\t\t\tsetOkBtnStatus();\n",
       "\t\t}\n",
       "\t}\n",
       "});\n",
       "$('#rows-count').on('input', function () {\n",
       "\tsetOkBtnStatus();\n",
       "});\n",
       "\n",
       "var rows = $('.field3cdb283f');\n",
       "$('.options-fields-search').keyup(function() {\n",
       "\tvar val = '^(?=.*\\\\b' + $.trim($(this).val()).split(/\\s+/).join('\\\\b)(?=.*\\\\b') + ').*$';\n",
       "\tvar reg = RegExp(val, 'i');\n",
       "\tvar index = 0;\n",
       "\t\n",
       "\trows.each(function(i, e) {\n",
       "\t\tif (!reg.test($(this).text().replace(/\\s+/g, ' '))) {\n",
       "\t\t\t$(this).attr('class', 'hidden');\n",
       "\t\t}\n",
       "\t\telse {\n",
       "\t\t\t$(this).attr('class', (++index % 2 == 0 ? 'even' : 'odd'));\n",
       "\t\t}\n",
       "\t});\n",
       "});\n",
       "\n",
       "$('.fields-link').click(function() {\n",
       "\tif ($('.all-fields').hasClass('numeric-only')) {\n",
       "\t\t$('.all-fields').removeClass('numeric-only');\n",
       "\t\t$(this).text('Show only numeric columns');\n",
       "\t}\n",
       "\telse {\n",
       "\t\t$('.all-fields').addClass('numeric-only');\n",
       "\t\t$(this).text('Show all columns');\n",
       "\t}\n",
       "});\n",
       "\n",
       "        IPython.keyboard_manager.register_events(modal_obj);\n",
       "    });\n",
       "\n",
       "    \n",
       "    modal_obj.on(\"hidden.bs.modal\", function () {\n",
       "        if ( global.KMEnableProto ){\n",
       "            var KeyboardManager = require('notebook/js/keyboardmanager').KeyboardManager;\n",
       "            KeyboardManager.prototype.enable = global.KMEnableProto;\n",
       "            delete global.KMEnableProto;\n",
       "        }\n",
       "        \n",
       "        $('#pixiedust-dialog-script-3cdb283f').remove();\n",
       "    });\n",
       "    })\n",
       "\n",
       "            \n",
       "        },\n",
       "        icon: function() {\n",
       "            return mpld3.icons[\"brush\"];\n",
       "        }\n",
       "    });\n",
       "    this.fig.buttons.push(DialogPluginButton);\n",
       "}\n",
       "                 mpld3.draw_figure(\"fig_el1087851572009768026187057\", {\"axes\": [{\"xlim\": [-0.5, 20.5], \"yscale\": \"linear\", \"axesbg\": \"#EAEAF2\", \"texts\": [{\"v_baseline\": \"hanging\", \"h_anchor\": \"middle\", \"color\": \"#262626\", \"text\": \"name\", \"coordinates\": \"axes\", \"zorder\": 3, \"alpha\": 1, \"fontsize\": 11.0, \"position\": [0.5, -0.19259659322238554], \"rotation\": -0.0, \"id\": \"el108785155720912\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"engine\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.4238351254480287, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785157312592\"}, {\"v_baseline\": \"auto\", \"h_anchor\": \"start\", \"color\": \"#262626\", \"text\": \"mpg\", \"coordinates\": \"axes\", \"zorder\": 1000003.0, \"alpha\": 1, \"fontsize\": 10.0, \"position\": [0.5876144962166467, 1.0874540103016925], \"rotation\": -0.0, \"id\": \"el108785157313232\"}], \"zoomable\": true, \"images\": [], \"xdomain\": [-0.5, 20.5], \"ylim\": [0.0, 1060.5], \"paths\": [{\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data01\", \"id\": \"el108785156011792\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data02\", \"id\": \"el108785156011856\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data03\", \"id\": \"el108785152538896\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data04\", \"id\": \"el108785155717776\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data05\", \"id\": \"el108785154109904\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data06\", \"id\": \"el108785156063312\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data07\", \"id\": \"el108785152700816\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data08\", \"id\": \"el108785152701008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data09\", \"id\": \"el108785154536720\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data10\", \"id\": \"el108785154534224\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data11\", \"id\": \"el108785154536400\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data12\", \"id\": \"el108785154502480\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data13\", \"id\": \"el108785154501968\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data14\", \"id\": \"el108785154375504\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data09\", \"id\": \"el108785154036560\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data15\", \"id\": \"el108785154036944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data16\", \"id\": \"el108785155120912\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data17\", \"id\": \"el108785155123152\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data18\", \"id\": \"el108785157915536\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data01\", \"id\": \"el108785157916368\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data19\", \"id\": \"el108785157915984\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data20\", \"id\": \"el108785155245008\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data21\", \"id\": \"el108785155245648\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data22\", \"id\": \"el108785155384656\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data23\", \"id\": \"el108784402131280\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data24\", \"id\": \"el108785108362256\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data25\", \"id\": \"el108785154951056\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data26\", \"id\": \"el108785154950864\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data27\", \"id\": \"el108785156901136\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data28\", \"id\": \"el108785156901200\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data29\", \"id\": \"el108785155138192\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data30\", \"id\": \"el108785155136016\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data31\", \"id\": \"el108785162041168\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data32\", \"id\": \"el108785162038416\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data33\", \"id\": \"el108785162041104\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data34\", \"id\": \"el108785154746640\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data35\", \"id\": \"el108785153184080\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data36\", \"id\": \"el108785155063376\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data37\", \"id\": \"el108785155064848\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data38\", \"id\": \"el108785155062224\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 2, \"data\": \"data23\", \"id\": \"el108785156780944\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"data\", \"dasharray\": \"none\", \"zorder\": 1, \"alpha\": 1, \"xindex\": 0, \"data\": \"data39\", \"id\": \"el108785156778832\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#00007F\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 0, \"data\": \"data40\", \"id\": \"el108785157314320\"}, {\"edgecolor\": \"none\", \"facecolor\": \"#7F0000\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"L\", \"L\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000001.0, \"alpha\": 1, \"xindex\": 2, \"data\": \"data40\", \"id\": \"el108785157314192\"}, {\"edgecolor\": \"#CCCCCC\", \"facecolor\": \"#EAEAF2\", \"edgewidth\": 0.3, \"pathcodes\": [\"M\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"L\", \"S\", \"Z\"], \"yindex\": 1, \"coordinates\": \"axes\", \"dasharray\": \"none\", \"zorder\": 1000000.0, \"alpha\": 0.8, \"xindex\": 0, \"data\": \"data41\", \"id\": \"el108785155681616\"}], \"sharey\": [], \"sharex\": [], \"axesbgalpha\": null, \"axes\": [{\"scale\": \"linear\", \"tickformat\": [\"audi 4000\", \"bmw 320i\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"chevrolet ..\", \"dodge arie..\", \"dodge aspe..\", \"dodge colt..\", \"dodge d200\", \"ford count..\", \"nissan sta..\", \"peugeot 50..\", \"plymouth s..\", \"toyota cor..\", \"toyota cor..\", \"toyota sta..\", \"toyota ter..\", \"volkswagen..\", \"volkswagen..\"], \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"bottom\", \"nticks\": 21, \"tickvalues\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}, {\"scale\": \"linear\", \"tickformat\": null, \"grid\": {\"color\": \"#FFFFFF\", \"alpha\": 1.0, \"dasharray\": \"none\", \"gridOn\": true}, \"visible\": true, \"fontsize\": 10.0, \"position\": \"left\", \"nticks\": 7, \"tickvalues\": null}], \"lines\": [], \"markers\": [], \"id\": \"el108785156291984\", \"ydomain\": [0.0, 1060.5], \"collections\": [], \"xscale\": \"linear\", \"bbox\": [0.125, 0.125, 0.775, 0.755]}], \"height\": 360.0, \"width\": 648.0, \"plugins\": [{\"type\": \"reset\"}, {\"enabled\": false, \"button\": true, \"type\": \"zoom\"}, {\"enabled\": false, \"button\": true, \"type\": \"boxzoom\"}, {\"handlerId\": \"barChart\", \"type\": \"dialog\"}], \"data\": {\"data40\": [[0.3680804460374353, 1.0874540103016925, 0.5318598168060533], [0.407905217045002, 1.0874540103016925, 0.5716845878136201], [0.407905217045002, 1.1132082413539368, 0.5716845878136201], [0.3680804460374353, 1.1132082413539368, 0.5318598168060533]], \"data41\": [[0.3640979689366787, 1.0653789551140544], [0.6359020310633214, 1.0653789551140544], [0.639884508164078, 1.0653789551140544], [0.639884508164078, 1.072737306843267], [0.639884508164078, 1.1242457689477556], [0.639884508164078, 1.1316041206769685], [0.6359020310633214, 1.1316041206769685], [0.3640979689366787, 1.1316041206769685], [0.36011549183592195, 1.1316041206769685], [0.36011549183592195, 1.1242457689477556], [0.36011549183592195, 1.072737306843267], [0.36011549183592195, 1.0653789551140544], [0.3640979689366787, 1.0653789551140544]], \"data28\": [[8.0, 0.0], [8.25, 0.0], [8.25, 20.6], [8.0, 20.6]], \"data06\": [[4.75, 0.0], [5.0, 0.0], [5.0, 262.0], [4.75, 262.0]], \"data08\": [[6.75, 0.0], [7.0, 0.0], [7.0, 156.0], [6.75, 156.0]], \"data09\": [[7.75, 0.0, 13.75], [8.0, 0.0, 14.0], [8.0, 225.0, 14.0], [7.75, 225.0, 13.75]], \"data20\": [[0.0, 0.0], [0.25, 0.0], [0.25, 34.3], [0.0, 34.3]], \"data21\": [[1.0, 0.0], [1.25, 0.0], [1.25, 21.5], [1.0, 21.5]], \"data22\": [[2.0, 0.0], [2.25, 0.0], [2.25, 47.5], [2.0, 47.5]], \"data05\": [[3.75, 0.0], [4.0, 0.0], [4.0, 555.0], [3.75, 555.0]], \"data02\": [[0.75, 0.0], [1.0, 0.0], [1.0, 121.0], [0.75, 121.0]], \"data04\": [[2.75, 0.0], [3.0, 0.0], [3.0, 112.0], [2.75, 112.0]], \"data26\": [[6.0, 0.0], [6.25, 0.0], [6.25, 16.0], [6.0, 16.0]], \"data01\": [[-0.25, 0.0, 18.75], [0.0, 0.0, 19.0], [0.0, 97.0, 19.0], [-0.25, 97.0, 18.75]], \"data23\": [[3.0, 0.0, 19.0], [3.25, 0.0, 19.25], [3.25, 27.0, 19.25], [3.0, 27.0, 19.0]], \"data24\": [[4.0, 0.0], [4.25, 0.0], [4.25, 33.5], [4.0, 33.5]], \"data03\": [[1.75, 0.0], [2.0, 0.0], [2.0, 1010.0], [1.75, 1010.0]], \"data27\": [[7.0, 0.0], [7.25, 0.0], [7.25, 25.8], [7.0, 25.8]], \"data07\": [[5.75, 0.0], [6.0, 0.0], [6.0, 250.0], [5.75, 250.0]], \"data37\": [[17.0, 0.0], [17.25, 0.0], [17.25, 39.1], [17.0, 39.1]], \"data36\": [[16.0, 0.0], [16.25, 0.0], [16.25, 63.0], [16.0, 63.0]], \"data35\": [[15.0, 0.0], [15.25, 0.0], [15.25, 155.6], [15.0, 155.6]], \"data34\": [[14.0, 0.0], [14.25, 0.0], [14.25, 18.0], [14.0, 18.0]], \"data25\": [[5.0, 0.0], [5.25, 0.0], [5.25, 20.0], [5.0, 20.0]], \"data32\": [[12.0, 0.0], [12.25, 0.0], [12.25, 36.0], [12.0, 36.0]], \"data31\": [[11.0, 0.0], [11.25, 0.0], [11.25, 12.0], [11.0, 12.0]], \"data30\": [[10.0, 0.0], [10.25, 0.0], [10.25, 11.0], [10.0, 11.0]], \"data39\": [[20.0, 0.0], [20.25, 0.0], [20.25, 58.5], [20.0, 58.5]], \"data38\": [[18.0, 0.0], [18.25, 0.0], [18.25, 37.7], [18.0, 37.7]], \"data19\": [[19.75, 0.0], [20.0, 0.0], [20.0, 187.0], [19.75, 187.0]], \"data18\": [[17.75, 0.0], [18.0, 0.0], [18.0, 89.0], [17.75, 89.0]], \"data15\": [[14.75, 0.0], [15.0, 0.0], [15.0, 518.0], [14.75, 518.0]], \"data14\": [[12.75, 0.0], [13.0, 0.0], [13.0, 491.0], [12.75, 491.0]], \"data17\": [[16.75, 0.0], [17.0, 0.0], [17.0, 79.0], [16.75, 79.0]], \"data16\": [[15.75, 0.0], [16.0, 0.0], [16.0, 142.0], [15.75, 142.0]], \"data11\": [[9.75, 0.0], [10.0, 0.0], [10.0, 318.0], [9.75, 318.0]], \"data10\": [[8.75, 0.0], [9.0, 0.0], [9.0, 98.0], [8.75, 98.0]], \"data13\": [[11.75, 0.0], [12.0, 0.0], [12.0, 120.0], [11.75, 120.0]], \"data12\": [[10.75, 0.0], [11.0, 0.0], [11.0, 400.0], [10.75, 400.0]], \"data29\": [[9.0, 0.0], [9.25, 0.0], [9.25, 28.0], [9.0, 28.0]], \"data33\": [[13.0, 0.0], [13.25, 0.0], [13.25, 94.2], [13.0, 94.2]]}, \"id\": \"el108785157200976\"});\n",
       "            })\n",
       "         });\n",
       "}\n",
       "</script>\n",
       "                    \n",
       "                        <div>Some labels are not displayed because of a lack of space. Click on Stretch image to see them all</div>\n",
       "                    \n",
       "                        <div>Warning: While great, D3 rendering is using MPLD3 library which has limitations that have not yet been fixed</div>\n",
       "                    \n",
       "                "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(dd,cell_id='174EF8FEFACF47F9811183C2C0EE3DC3',showLegend='true',rowCount='25',mpld3='true',aggregation='SUM',valueFields='mpg,engine',charttype='grouped',keyFields='name',handlerId='barChart',rendererId='matplotlib',nostore_figureOnly='true',nostore_cw='1098',nostore_bokeh='false',prefix='3cdb283f')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "pySpark (Spark 1.6.0)",
   "language": "python",
   "name": "pyspark1.6"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  },
  "pixiedust_test": {
   "skipPython": [
    3.5,
    2.7
   ]
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
